【发布时间】:2012-08-25 22:01:33
【问题描述】:
我有一个包含很多子元素(1000 个)的父元素。我正在寻找最快的方法来处理最后一个子元素。我发现的选项是:
$('.parent .child').last()
和
$('.parent .child:last')
对于哪一个在浏览器中更快可靠有什么意见?
编辑
我在 jsfiddle 中编写了一个测试来衡量这一点,结果发现差异几乎可以忽略不计。尽管 .last() 表现更好,但差异可以忽略不计。所以我认为即使使用 :last 选择器,它实际上是获取整个元素列表然后返回最后一个元素?难以置信。
【问题讨论】:
-
考虑针对此类问题的 jsperf 测试用例 ..
-
当然最快的方法是使用
element.lastChild。除非您正在寻找后代而不是孩子。也可以考虑var els = document.querySelectorAll('.parent .child'); $(els[els.length - 1])。 -
请注意,
:lastdocumentation 表示“要在使用:last选择元素时获得最佳性能,请先使用纯 CSS 选择器选择元素,然后使用.filter(":last")。” -
参考 RobG 上面的评论,
$(els).get(-1);比$(els[els.length - 1])更简洁,虽然我不能评论相对效率。
标签: javascript jquery