我有以下ul设置:
<div id="sidebar">
<ul id="themenu" class="sf-menu sf-vertical">
<li>
<a class="sf-with-ul topm" href="#">Musical Instruments</a>
<ul class="bullet">
<li><a href="#">Guitars</a></li>
<li><a href="#">Drums</a></li>
<li><a href="#">Keyboards</a></li>
<li><a href="#">Brass</a></li>
</ul>
</li>
</ul>
</div>
我的问题是,除了上述内容之外,我还有其他带有子菜单的顶级菜单,当选择顶级菜单时,它会根据我创建的名为“currentMenu”的类突出显示为“绿色” ”
我的jQuery适用于顶级菜单项,因为每个顶级菜单都被切换为“绿色”,但我不确定该怎么做,是当用户选择说子菜单“鼓”时“在上面的代码中,我希望它的父级顶级菜单设置为”currentMenu“类。 在这种情况下,将设置顶级按钮“乐器”。
我不确定该怎么做。我试过像:
$('ul.sf-menu li a').click(function() {
if($(this).hasClass('nosub')) {
$("ul.sf-menu li ul li a").removeClass("currentSubMenu");
}
else {
$("ul.sf-menu li a").not(this).removeClass("currentMenu");
$("ul.bullet li a").parent().this.addClass("currentMenu");
}
});
这条线我不确定:
$("ul.bullet li a").parent().this.addClass("currentMenu");
任何帮助都会很棒。
感谢。
答案 0 :(得分:2)
我仍然不能100%肯定这个问题,但我认为这就是你所追求的。而不是:
$("ul.bullet li a").parent().this.addClass("currentMenu");
您可以使用.closest()
到达目的地,如下所示:
$(this).closest('.sf-menu > li').children('a').addClass('currentMenu');
这是从您点击的链接到其所在的第一个级别<li>
,并将.currentMenu
类应用于其<a>
子级。
或者,如果您希望.currentClass
应用于您所在的每个级别,则可以执行以下操作:
$(this).parents('li').children('a').addClass('currentMenu')
.end().siblings().children('a').removeClass("currentMenu");