如何在jQuery的层次结构菜单中选择最顶层的<li>元素?</li>

时间:2012-03-17 16:16:18

标签: jquery jquery-selectors drop-down-menu

我正在使用带有嵌套<ul>列表的jQuery实现菜单栏,其中每个<li>包含<a>标记。鉴于我可以通过href属性匹配特定的<a>标签,我如何走菜单以便到达最顶端的<li>元素?

我需要这样,所以我可以设置一个class =“current”来改变突出显示以反映新选择的项目。

编辑:对所有回复的人,谢谢。像往常一样,这是一种教育。我最终使用了@ PKG的解决方案......它非常适合我的实现。

5 个答案:

答案 0 :(得分:3)

以下功能仅返回顶级<li>

$(this).parents("li").last();

答案 1 :(得分:0)

如果您正在处理<a>的点击事件,则可以使用:

$(this).closest('li')

答案 2 :(得分:0)

$(this).closest("li");

如果您希望整个UL中的第一个LI位于:

$(this).closest("ul").find("li:first");

答案 3 :(得分:0)

你可以这样使用parents()

var url = window.location.href; // (or however you prefer)

$('a[href*="'+url+'"]').parents('li').addClass('current');

现在,我将如何做,就是在最顶层的li或类似的东西中添加一个类来缩小它。否则,它会将类添加到路径中的所有列表项,这通常也是您想要的。

工作小提琴:http://jsfiddle.net/b3RX8/1/

答案 4 :(得分:0)

虽然你的问题很模糊,但我认为你正在尝试这样的事情:

// This will loop through all of the ul's on the page and handle the first li
$('ul').each(function(index,element){
    var first_li = $(element).find('li:first');
    // Do something with the li
});