:gt(0)vs:not(:first)vs .slice(1)

时间:2012-02-27 12:42:19

标签: javascript jquery performance

在此之前,我总是使用gt选择器来选择除第一个之外的所有元素。现在我找到了对我来说更优雅的解决方案。这是使用:not(:first)而不是:gt(0) 这个选择器的性能有什么不同,你建议使用哪一个?

编辑:如前所述Felix King,.slice(1)是另一个选择除第一个之外的所有元素的选项。哪个更快?

2 个答案:

答案 0 :(得分:10)

时间进行一些分析!给定一个页面空白,除了10个<span>缓存到名为spans的变量和10,000次迭代中,spans.filter(':gt(0)')为824ms,spans.not(':first')为1276ms。

使用Firefox 11中的console.time()console.timeEnd()获得的数据。

考虑到我必须进行10k迭代才能达到1秒的标记,我建议它没关系?

答案 1 :(得分:3)

为此写了一个jsperf测试:

http://jsperf.com/select-all-but-first-42

原来切片方法最快!

对jsperf还有另一项针对相同要求的测试:

http://jsperf.com/select-all-but-first