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>
希望是有道理的, 干杯!
解决方案
容易犯的错误。尝试这样:
$("#sidebar ul li:last-child").addClass("last");
基本上:最后并没有完全做你认为它。它只匹配的最后文件,而不是上次在每个列表英寸这就是:最后一个孩子是
其他提示
与jquery添加此
$("ul li").last().addClass('last');
这将无法正常工作的原因是由于: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
或者你可以给你的列表中的ID和使用,作为一个上下文jQuery的电话。
<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");
现在,在第一个列表的最后李将有一流“lastItem”。
编辑:对不起,误解的问题。忽略此请。
如果您需要添加类至3个单独的列表可以分配一个类它们,并使用“每个”:
$('#sidebar ul.class li:last-child').each(function(e){
$(this).addClass("last");
});
这应该工作完全按照您的预期。
您可以尝试
$('#sidebar ul li:last').addClass('last');
不隶属于 StackOverflow