【问题标题】:Find the last element in each loop regardless of element type [closed]无论元素类型如何,查找每个循环中的最后一个元素[关闭]
【发布时间】:2013-08-06 17:13:24
【问题描述】:

我有一系列部分,包含不同类型的元素,如下所示:

<section>
    <div>Something</div>
    <a href="#">Some Copy</a>
    <div>Something</div>
    <a href="#">Some Copy</a>
</section>

<section>
    <a href="#">Some Copy</a>
    <div>Something</div>
    <a href="#">Some Copy</a> <a href="#">Some Copy</a>
    <div>Something</div>
</section>

我需要遍历每个部分并找到最后一个元素,无论它是 div 还是锚点。

$("section").each(function(){
      var last = //find the last element
      last.addClass('last');
}); 

我需要帮助定义变量last。通常我只会使用 css 的 last-childlast-of-type 来标识每个部分中的最后一个元素,但是因为有不同类型的元素(锚点和 div)我相信我需要使用 javascript。 知道如何找到最后一个元素吗?

【问题讨论】:

  • 奇怪但没人提及:$("section :last-child").addClass('last');jsfiddle.net/Q24XW
  • 查看 jsfiddle,它会为每个部分找到最后一个孩子。顺便说一句,如果最后一个类的目的是为了样式,你根本不应该使用 javascript/jquery,只能使用 CSS

标签: jquery css css-selectors


【解决方案1】:

编辑:呃,嗯,jQuery 有一个选择器,如Musa's answer 所示。把这个留在这里,以防不使用 jQuery 的人(或者喜欢“去突击队”的人)可能需要它。


在现代浏览器上,您可以使用lastElementChild

$("section").each(function(){
    var last = this.lastElementChild
    // Use `last` (possibly wrapped in a jQuery instance)
});

(您可能希望将其包装在 jQuery 实例中。)

在旧版浏览器上,您可以使用lastChild,然后通过previousSibling 回到最后一个元素(而不是文本节点、评论节点等):

$("section").each(function(){
      var last = this.lastChild;
      while (last && last.nodeType !== 1) {
          last = last.previousSibling;
      }
      // Use `last` (possibly wrapped in a jQuery instance)
});

【讨论】:

  • 感谢您的扩展回答
【解决方案2】:

使用:last jQuery 选择器。

$('section').find(':last').each(function() {
    // Code here
});

【讨论】:

    【解决方案3】:

    我采取了与@Musa 几乎相同的方法。你可以在这里看到它:

    http://jsfiddle.net/nRtsF/

    $("section").each(function(){ 
          $(this).children(':last').addClass('last');
    }); 
    

    【讨论】:

      【解决方案4】:

      试试

      $("section").each(function(){
            var last = $(this).children(':last');
            last.addClass('last');
      }); 
      

      http://jsfiddle.net/mowglisanu/23EcJ/

      【讨论】:

      • 谢谢,这对我很有效。
      • LOL 或者,你知道的。 :-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 2015-04-18
      • 2022-01-21
      相关资源
      最近更新 更多