У меня есть простое многоуровневое меню и скрипт, который выделяет пункт меню независимо от того, является ли он родительским или дочерним меню.
В приведенном ниже примере, когда я нахожусь на дочерней странице, он изменит только цвет дочерней страницы, в то время как я также хочу изменить цвет или его родительский элемент.
Я пробовал несколько вещей, но это не работает так, как предполагалось.
Вот копия того, что у меня есть. В случае, если это не сработает, вот фрагмент кода:
jQuery(document).ready(function() {
var url = window.location.href;
$('#cssmenu a[href="' + url + '"]').addClass('active-menu');
// Will also work for relative and absolute hrefs
$('#cssmenu a').filter(function() {
return this.href == url;
$(this).parents("li a").addClass('active-menu');
}).addClass('active-menu');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="cssmenu">
<div id="menu-button"></div>
<ul>
<li><a href="/en/about-us/">About Us</a>
</li>
<li class="has-sub">
<span class="submenu-button"></span><a href="#">Gallery </a>
<ul>
<li><a href="/en/photo-gallery/" class="active-menu">Photo Gallery</a>
</li>
<li><a href="/en/video-gallery">Video Gallery</a>
</li>
<li><a href="/en/instagram-gallery">Instagram Gallery</a>
</li>
</ul>
</li>
<li><a href="/en/news/">News</a>
</li>
<li><a href="/en/contact/">Contact</a>
</li>
</ul>
</div>
ОБНОВЛЕНИЕ
Вот мой новый код, но он работает, но также выделяет другие ссылки:
$('#cssmenu a').filter(function() {
$(this).parents("li.has-sub").find('a:first').addClass('active-menu');
return this.href == url;
}).addClass('active-menu');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="cssmenu">
<div id="menu-button"></div>
<ul>
<li><a href="/en/about-us/">About Us</a>
</li>
<li class="has-sub">
<span class="submenu-button"></span><a href="#">Gallery </a>
<ul>
<li><a href="/en/photo-gallery/" class="active-menu">Photo Gallery</a>
</li>
<li><a href="/en/video-gallery">Video Gallery</a>
</li>
<li><a href="/en/instagram-gallery">Instagram Gallery</a>
</li>
</ul>
</li>
<li><a href="/en/news/">News</a>
</li>
<li><a href="/en/contact/">Contact</a>
</li>
</ul>
</div>
jquery
. Вот обновленный перо а также в этомfilter
$('#cssmenu a').filter(function () {
в самой первой строке у вас есть операторreturn
. Так что все, что ниже, не будет работать... Я изменил то же самое в Pen, указанном выше.. - person Guruprasad J Rao   schedule 04.10.2015jquery
и переместилreturn statement
.. - person Guruprasad J Rao   schedule 04.10.2015addClass
, потому что у вас естьreturn statement
внутриfilter
, который просто вернет выполнение обратно и не будет выполнять ничего, что к нему прикреплено. Так чтоaddClass
в#cssmenu a
не будет работать.. - person Guruprasad J Rao   schedule 04.10.2015active-menu
в дочернее меню, а затем и в родительское меню. В моем примере класс статичен, поэтому ваш пример работает иначе, он ломается - person Learning   schedule 04.10.2015