我有一系列的部分,有不同类型的元素,如:
<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-child
或last-of-type
来识别每个部分中的最后一个元素,但因为有不同类型的元素(锚点和div),我相信我需要使用javascript。
知道如何找到最后一个元素吗?
答案 0 :(得分:5)
尝试
$("section").each(function(){
var last = $(this).children(':last');
last.addClass('last');
});
答案 1 :(得分: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 :(得分:0)
我采用了与@Musa几乎相同的方法。你可以在这里看到它:
$("section").each(function(){
$(this).children(':last').addClass('last');
});
答案 3 :(得分:0)
使用:last
jQuery选择器。
$('section').find(':last').each(function() {
// Code here
});