-3

我有一系列部分,具有不同类型的元素,例如:

<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。知道如何找到最后一个元素吗?

4

4 回答 4

5

尝试

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

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

于 2013-08-05T21:01:37.257 回答
1

编辑:呃,嗯,jQuery 有一个选择器,如Musa 的回答所示。把它留在这里,以防不使用 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)
});
于 2013-08-05T21:01:35.733 回答
0

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

http://jsfiddle.net/nRtsF/

$("section").each(function(){ 
      $(this).children(':last').addClass('last');
}); 
于 2013-08-05T21:02:27.653 回答
0

使用:lastjQuery 选择器。

$('section').find(':last').each(function() {
    // Code here
});
于 2013-08-05T21:02:34.097 回答