哪个更有效 - $('selector')。last()或$('selector:last')?

时间:2012-08-31 05:25:13

标签: javascript jquery

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

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

$('.parent .child:last')

有关浏览器中哪一个可靠地更快的任何意见?

修改

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

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

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:1)

你必须看到这个performance test

更新related question已经有了很好的答案。