在:last
某些情况下,选择器返回多个元素。这里有一个 jsfiddle可以尝试,因为它很难相信!
代码一失败:
alert($(".child").find("span:last").length); // -> alerts 3
说明:选择最后一个匹配的元素。
注意 :last 通过过滤当前 jQuery 集合并匹配其中的最后一个元素来选择单个元素。
我错过了什么还是这是一个错误?
在:last
某些情况下,选择器返回多个元素。这里有一个 jsfiddle可以尝试,因为它很难相信!
代码一失败:
alert($(".child").find("span:last").length); // -> alerts 3
说明:选择最后一个匹配的元素。
注意 :last 通过过滤当前 jQuery 集合并匹配其中的最后一个元素来选择单个元素。
我错过了什么还是这是一个错误?
当您使用.find()
and:first
时:last
,它会搜索相对于使用 找到的每个祖先元素$('.child')
的第一个和最后一个元素。
由于您有三个.child
元素,因此您有三个要在其中搜索span
s 的元素。由于每个.child
都有一个span
,:last
因此在 的上下文中出现这三个中的每一个.find()
。然后.find()
将它们全部收集在一起,因此您有三个span
元素。
这很正常,我认为您需要的是:
alert( $(".child:last").find("span:last").length );
因为否则只有“孩子”作为选择,您将始终输入第一个。
剖析您的测试,我们有:
var matches = [];
$('.child').each(function(){
//get collection of all spans in the element
var collection = $('span',this);
//NOTE: There is only 1 span in collection at this point
//get last element
var match = collection.last();
matches.push(match);
});
alert(matches.length); //which is obviously 3