Я пытаюсь написать функцию для установки текущего активного меню, но в моем меню есть 2 поля
class= "current" и class= "current selectedLava"
мое меню:
<nav>
<ul class="sf-menu">
<li><a href="Default.aspx">Home</a>
<ul>
<li><a href="About.aspx">Home Cinema</a></li>
</ul>
</li>
<li><a href="Home_Movie.aspx">Movie</a>
<ul>
<li ><a href="List_Movie.aspx">List Movie</a></li>
<li ><a href="abc.aspx">List</a></li>
</li>
</ul><!-- end menu -->
я имею в виду, когда я нахожусь в Home_Movie.aspx, это будет
<li class="current selectedLava"><a href="Home_Movie.aspx">Movie</a>
<ul>
<li><a href="List_Movie.aspx">List Movie</a></li>
<li ><a href="abc.aspx">List</a></li>
</li>
и когда я нахожусь в List_Movie.aspx, это будет
<li class="current selectedLava"><a href="Home_Movie.aspx">Movie</a>
<ul>
<li class="current"><a href="List_Movie.aspx">List Movie</a></li>
<li ><a href="abc.aspx">List</a></li>
</li>
легко понять:
Я думаю, вы замените свой метод highlightActiveMenuItem следующим образом:
highlightActiveMenuItem = function () {
var url = window.location.pathname.substr(6);
$('nav li a[href="' + url + '"]').parent().addClass('current');
if ($('nav li a[href="' + url + '"]').parent().parent().hasClass('sf-menu'))
{
$('nav li a[href="' + url + '"]').parent().addClass('selectedLava');
}
else
{
$('nav li a[href="' + url + '"]').parent().parent().parent().addClass('current selectedLava');
}
}
Или используйте специальный класс для элемента меню верхнего уровня, чтобы избежать тройного parent()
.addClass('current selectedLava')