jquery:多个列表的最后一个选择器

时间:2012-12-10 03:28:08

标签: javascript jquery

我的导航看起来像这样

<ul class="navigation">
    <li class="navlist">
    Navigation1
    <ul>
    <li>point1</li>
    <li>point2</li>
    ...
    </ul>
    </li>

    <li class="navlist">
    Navigation2
    <ul>
    <li>point1</li>
    <li>point2</li>
    ...
    </ul>
    </li>
</ul>
etc (4 more navigations) .. 

现在我想选择最后一个并用jquery为它添加一个类。 Normaly我不会成为一个Porblem。但是我在代码中有5次这样的导航。并且它只使用此选择器将类添加到最后一个

$('.navigation ul:last').addClass('last_border')

3 个答案:

答案 0 :(得分:1)

使用the :last-child selector

  

虽然:last只匹配一个元素,但:last-child可以匹配多个:每个父元素一个。

不是:last

  

请注意:last通过过滤当前的jQuery集合并匹配其中的最后一个元素来选择单个元素。


所以你想选择“每个导航类中最后一个导航列表中的最后一个ul?”然后是你的选择器:

$('.navigation .navlist:last-child ul:last-child')

http://jsfiddle.net/mattball/HHDHE/

答案 1 :(得分:1)

循环遍历.navigation个元素,并选择每个元素中的最后一个ul

$(".navigation").each(function(i, nav) {
    $(nav).find("ul:last").addClass("last_border");
});

由于.find("ul:last")是从每个人.navigation的上下文执行的,因此:last仅适用于当前的.navigation元素。


或者由于jQuery的隐式迭代,你实际上可以这样做:

$(".navigation").find("ul:last").addClass("last_border");

jQuery将迭代找到的.navigation元素,并分别对每个元素执行.find()

答案 2 :(得分:0)

我在这里猜测你真正想要的东西:

$('.navigation > li.navlist > ul:last').addClass('last_border')

这有帮助吗?