JQuery - 如何向每个最后一个列表项添加一个类?

发布于 2024-07-13 16:31:56 字数 368 浏览 9 评论 0原文

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

$("#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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

樱花坊 2024-07-20 16:31:56

很容易犯的错误。 试试这个:

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

基本上 :last 并不完全符合你的想法。 它仅匹配文档中的最后一个,而不是每个列表中的最后一个。 这就是 :last-child 的用途。

Easy mistake to make. Try this:

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

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.

嗼ふ静 2024-07-20 16:31:56

用 jquery 添加这个

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

with jquery add this

$("ul li").last().addClass('last');
幽梦紫曦~ 2024-07-20 16:31:56

不起作用的原因是 :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

    The reason that won't work is due to the fact that :last only matches one element. From the jQuery documentation:

    Matches the last selected element.

    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:

     <ul>
       <li>1</li>
       <li>2</li>
     </ul>
     <ul>
       <li>3</li>
       <li>4</li>
     </ul>
     <ul>
       <li>5</li>
       <li>6</li>
     </ul>
    

    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.

    雨后咖啡店 2024-07-20 16:31:56

    或者你可以给你的列表一个 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");
    

    现在第一个列表中的最后一个 li 将具有类“lastItem”。

    编辑:抱歉,看错问题了。 请忽略这一点。

    Or you could give your list an id and use that as an context to 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>
    

    And then you can do:

    jQuery("li:last", "ul#myList").addClass("lastItem");
    

    Now the last li in the first list would have class "lastItem".

    Edit: Sorry, misread the question. Ignore this please.

    弥繁 2024-07-20 16:31:56

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

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

    这应该完全按照您的预期工作。

    If you need to add class to 3 separate lists you can assign a class for them and use 'each':

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

    This should work exactly as you expected.

    蓝礼 2024-07-20 16:31:56

    你可以试试

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

    you can try

    $('#sidebar ul li:last').addClass('last');
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文