JQuery - 如何为每个列表项添加一个类?

时间:2009-02-19 02:40:04

标签: jquery css class each

这里有一些代码无效:

$("#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>

希望有道理, 干杯!

6 个答案:

答案 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');