2015-01-05 5 views
0

Я пытаюсь использовать JavaScript, чтобы выделить текущую страницу. У меня есть главное меню и подменю на странице. Я хочу, чтобы выделенное главное меню выглядело иначе, чем в подменю. Вот JavaScript, который я применил, чтобы применить класс css к текущей странице. Как мне получить JavaScript для разграничения двух разных классов?JavaScript, чтобы выделить активную страницу

<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script> 
    <script> 
    $(function(){ 
     $('a').each(function() { 
      if ($(this).prop('href') == window.location.href) { 
       $(this).addClass('main_current'); 
      } 
     }); 
    }); 
</script> 


<script> 
    $(function(){ 
     $('a').each(function() { 
      if ($(this).prop('href') == window.location.href) { 
       $(this).addClass('sub_current'); 
      } 
     }); 
    }); 
</script> 
+0

Можете ли вы опубликовать образец своего HTML? – bronzehedwick

+0

Я видел, как это делалось раньше, но я бы посоветовал это по нескольким причинам. Лучший подход - установить текущую страницу в бэкэнд, а не использовать JavaScript для этого вообще. Если вы собираетесь придерживаться такого подхода, вам следует рассмотреть возможность использования совпадения строк, и вы должны рассмотреть верхний/нижний регистр, поскольку 'WWW.GOOGLE.COM' и' www.google.com' не совпадают при использовании '= = '. Кроме того, 'www.google.com' и' www.google.com/'будут отправляться в одно и то же место, но одно будет« истинным », другое будет« ложным », используя вашу текущую функцию. – wf4

ответ

0

Укажите лучше селектор, когда вы перебирать подменю и переопределить некоторые свойства с «sub_current». EG:

Если у вас есть

<ul id="menu"> 
    <li><a href="thisPage.com">ThisMenu</a> 
     <ul id="sub-menu"> 
     <li><a href="thisPage.com">ThisSubMenu</a></li> 
     </ul> 
    </li> 
</ul> 

можно указать с $('#sub-menu a').

Надеюсь, это поможет.

веселит

1

Это действительно зависит от страницы/структуры кода вы идете. Обычно я не проверяю window.location, но вместо этого устанавливаю атрибут rel на тело страницы. На домашней странице будет rel="home", на другой странице rel='other-page и так далее.

Таким образом, вы можете проверить атрибут body rel и изменить меню/подменю на основе этого.

(function(){ 
    var currentLocation = $('body').attr('rel'); 

    switch(currentLocation){ 
     case 'home': 
      //add class to the home link 
      break; 

     case 'other-page': 
      //add class to the other link 
      break; 
    } 

})(); 
0

метод ниже будет делать то же самое

$(function() { 
var url = document.location.href; 
    if (url.indexOf("about") > -1) { 
    $('#nav-bar ul li:contains("About")').addClass('sub_current'); 
} 
else if (url.indexOf("index") > -1) { 
    $('#nav-bar ul li:contains("Home")').addClass('main_current'); 
} 

else { 
     // do something else 
    } 
}); 

Примечание:: содержит selctor чувствителен к регистру.