0

:last某些情况下,选择器返回多个元素。这里有一个 jsfiddle可以尝试,因为它很难相信!

代码一失败:

alert($(".child").find("span:last").length); // -> alerts 3

jQuery 文档

说明:选择最后一个匹配的元素。

注意 :last 通过过滤当前 jQuery 集合并匹配其中的最后一个元素来选择单个元素。

我错过了什么还是这是一个错误?

4

3 回答 3

3

当您使用.find()and:first:last,它会搜索相对于使用 找到的每个祖先元素$('.child')的第一个和最后一个元素。

由于您有三个.child元素,因此您有三个要在其中搜索spans 的元素。由于每个.child都有一个span:last因此在 的上下文中出现这三个中的每一个.find()。然后.find()将它们全部收集在一起,因此您有三个span元素。

于 2012-11-23T12:50:25.380 回答
0

这很正常,我认为您需要的是:

alert( $(".child:last").find("span:last").length );

因为否则只有“孩子”作为选择,您将始终输入第一个。

于 2012-11-23T12:52:40.097 回答
0

剖析您的测试,我们有:

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
于 2012-11-23T13:04:37.267 回答