1

我有一个看起来像这样的导航

<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 我不会是一个问题。但我在代码中有 5 个这样的导航。它只是使用这个选择器将类添加到最后一个类

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

3 回答 3

1

使用选择:last-child

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

不是:last

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


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

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

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

于 2012-12-10T03:31:50.773 回答
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()分别对每个元素执行。

于 2012-12-10T03:32:29.977 回答
0

我在这里猜测你真正想要什么:

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

这有帮助吗?

于 2012-12-10T03:32:16.443 回答