Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery-如何将类添加到每个最后的列表项?_Jquery_Css_Class_Each - Fatal编程技术网

JQuery-如何将类添加到每个最后的列表项?

JQuery-如何将类添加到每个最后的列表项?,jquery,css,class,each,Jquery,Css,Class,Each,这里有一些不起作用的代码: $("#sidebar ul li:last").each(function(){ $(this).addClass("last"); }); 基本上,我有3个列表,并希望为每个无序列表中最后出现的项目添加一个类(last) <ul> <li>Item 1</li> <li>Item 2</li> <li class="last">Item 3&l

这里有一些不起作用的代码:

$("#sidebar ul li:last").each(function(){
      $(this).addClass("last");
});
基本上,我有3个列表,并希望为每个无序列表中最后出现的项目添加一个类(last)

<ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li class="last">Item 3</li>
</ul>
  • 项目1
  • 项目2
  • 第3项
希望这是有道理的, 干杯

你可以试试

$('#sidebar ul li:last').addClass('last');

容易犯错误。试试这个:

$("#sidebar ul li:last-child").addClass("last");

基本上:last并不像你想象的那样。它只匹配文档中的最后一个,而不是每个列表中的最后一个。这就是:last child的作用。

不起作用的原因是因为
:last
只匹配一个元素。从jQuery文档中:

匹配最后选定的元素

因此,您的代码所做的是获取
  • 中所有
    元素的集合,然后从该集合中获取最后一个值。例如:

     <ul>
       <li>1</li>
       <li>2</li>
     </ul>
     <ul>
       <li>3</li>
       <li>4</li>
     </ul>
     <ul>
       <li>5</li>
       <li>6</li>
     </ul>
    
    • 一,
    • 二,
    • 三,
    • 四,
    • 五,
    • 六,
    您的代码将返回元素
  • 6
  • 。(在内部,它会将
  • 1
  • 收集到
  • 6
  • ,然后剪掉最后一个并返回)


    您要查找的是这里的其他答案所说的:
    :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>
    
    现在,第一个列表中的最后一个li将具有类“lastItem”

    编辑:对不起,误读了问题。请忽略此项。

    使用jquery添加此项

    $("ul li").last().addClass('last');
    

    如果您需要将类添加到3个单独的列表中,您可以为它们分配一个类并使用“每个”:

    $('#sidebar ul.class li:last-child').each(function(e){
        $(this).addClass("last");
    });
    

    这应该和您期望的完全一样。

    这个添加的类是否用于在列表底部添加边距?如果是这样,您可以使用ul的保证金底部属性。如果没有,请继续=帕索,你不需要做
    。在这种情况下,你可以直接做
    。addClass
    。jQuery将把所有命令应用于整个匹配元素集。另外,这里有一个测试不同选择器并查看它们如何工作的好网站:完美谢谢你花时间帮我,伙计,谢谢
    $('#sidebar ul.class li:last-child').each(function(e){
        $(this).addClass("last");
    });