这里有一些代码无效:
$("#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>
希望有道理, 干杯!
答案 0 :(得分:36)
容易犯错。试试这个:
$("#sidebar ul li:last-child").addClass("last");
基本上:最后并不完全按照你的想法去做。它只匹配文档中的最后一个,而不是每个列表中的最后一个。这就是:最后一个孩子是为了。
答案 1 :(得分:4)
用jquery添加这个
$("ul li").last().addClass('last');
答案 2 :(得分:3)
不起作用的原因是:last
只匹配一个元素。来自jQuery文档:
匹配最后选择的元素。
所以你的代码正在做的是获取<li>
中所有<ul>
个元素的集合,然后从该集合获取最后一个值。例如:
<ul>
<li>1</li>
<li>2</li>
</ul>
<ul>
<li>3</li>
<li>4</li>
</ul>
<ul>
<li>5</li>
<li>6</li>
</ul>
您的代码将返回元素<li>6</li>
。 (在内部,它会将<li>1</li>
收集到<li>6</li>
,然后丢掉最后一个并将其返回。
您正在寻找的是其他答案所说的内容::last-child
。
答案 3 :(得分:0)
或者您可以为列表指定一个id,并将其用作jquery-call的上下文。
<ul id="myList">
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
<ul id="anotherList">
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
然后你可以这样做:
jQuery("li:last", "ul#myList").addClass("lastItem");
现在第一个列表中的最后一个li将具有类“lastItem”。
编辑:对不起,误读了这个问题。请忽略这一点。
答案 4 :(得分:0)
如果您需要将类添加到3个单独的列表,您可以为它们分配一个类并使用“each”:
$('#sidebar ul.class li:last-child').each(function(e){
$(this).addClass("last");
});
这应该与您预期的完全一致。
答案 5 :(得分:-1)
你可以尝试
$('#sidebar ul li:last').addClass('last');