6

我有一个包含很多子元素(1000s)的父元素。我正在寻找最快的方法来处理最后一个子元素。我发现的选项是:

$('.parent .child').last()

$('.parent .child:last')

关于哪个跨浏览器可靠地更快的任何意见?

编辑

我在 jsfiddle 中编写了一个测试来衡量这一点,结果发现差异几乎可以忽略不计。尽管 .last() 表现更好,但差异可以忽略不计。所以我认为即使使用 :last 选择器,它实际上是获取整个元素列表然后返回最后一个元素?逆天。

小提琴:http: //jsfiddle.net/techfoobar/GFb9f/8/

4

2 回答 2

5

许多现代浏览器都支持document.querySelectorAll(),所以$('.parent .child').last()应该更快,因为选择器字符串可以按原样传递,然后弹出最后一个匹配的项目。

在后者中,:last不是标准的伪选择器,Sizzle 必须开始分块选择器字符串才能开始匹配。

总的来说,我会使用你认为最易读的东西。要开始优化,首先确保您的应用程序存在性能问题,并且您已将此选择器确定为瓶颈。

于 2012-08-31T05:27:57.443 回答
1

你必须看到这个性能测试

更新:关于这个相关问题已经有了很好的答案。

于 2012-08-31T05:35:45.420 回答