如何设置无序列表的父类

时间:2010-08-14 11:47:25

标签: jquery

我有以下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");

任何帮助都会很棒。

感谢。

1 个答案:

答案 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");

You can give it a try here