JQuery - 如何向每个最后一个列表项添加一个类?
这里有一些代码不起作用:
$("#sidebar ul li:last").each(function(){
$(this).addClass("last");
});
基本上我有 3 个列表,并且想要向每个无序列表中最后出现的每个项目添加一个类(最后一个)。
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li class="last">Item 3</li>
</ul>
希望这是有道理的, 干杯!
Got some code here that isn't working:
$("#sidebar ul li:last").each(function(){
$(this).addClass("last");
});
Basically I have 3 lists and want to add a class (last) to each item appearing last in each unordered list.
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li class="last">Item 3</li>
</ul>
Hope that makes sense,
Cheers!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
很容易犯的错误。 试试这个:
基本上 :last 并不完全符合你的想法。 它仅匹配文档中的最后一个,而不是每个列表中的最后一个。 这就是 :last-child 的用途。
Easy mistake to make. Try this:
Basically :last doesn't quite do what you think it does. It only matches the very last in the document, not the last in each list. That's what :last-child is for.
用 jquery 添加这个
with jquery add this
不起作用的原因是
:last
仅匹配一个元素。 来自 jQuery 文档:因此,您的代码所做的就是获取
中所有
元素的集合,然后从该集合中获取最后一个值。 示例:
您的代码将返回元素
。 (在内部,它会收集
到
然后删除最后一个并将其返回)。
您正在寻找的是这里其他答案所说的内容:
:last-child
。The reason that won't work is due to the fact that
:last
only matches one element. From the jQuery documentation:So what your code is doing is getting a set of all the
<li>
elements in a<ul>
and then from that set taking the last value. Example:Your code would return the element
<li>6</li>
. (Internally, it'd collect<li>1</li>
to<li>6</li>
and then lop off the last one and return it).What you're looking for is what the other answers here have said:
:last-child
.或者你可以给你的列表一个 id 并将其用作 jquery 调用的上下文。
然后你可以这样做:
现在第一个列表中的最后一个 li 将具有类“lastItem”。
编辑:抱歉,看错问题了。 请忽略这一点。
Or you could give your list an id and use that as an context to jquery-call.
And then you can do:
Now the last li in the first list would have class "lastItem".
Edit: Sorry, misread the question. Ignore this please.
如果您需要将类添加到 3 个单独的列表中,您可以为它们分配一个类并使用“each”:
这应该完全按照您的预期工作。
If you need to add class to 3 separate lists you can assign a class for them and use 'each':
This should work exactly as you expected.
你可以试试
you can try