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

7
在此之前,我一直使用gt选择器来选择除第一个元素外的所有元素。现在我找到了一个更优雅的解决方案。它是使用:not(:first)而不是:gt(0)
这些选择器的性能有什么区别,你建议使用哪个? 编辑:如Felix King所述,.slice(1)是选择除第一个元素外的另一个选项。那么哪个更快?

8
你也可以尝试使用.slice(1)而不是自定义选择器。 - Felix Kling
它们都很慢,@FelixKling建议的方法应该是最快的。 - Artem Koshelev
2个回答

10

时间来进行一点剖析!假设有一个页面,除了缓存在名为spans变量中的十个标签之外没有任何内容,并且进行了10000次迭代。在使用spans.filter(':gt(0)')时,我得到了824毫秒的时间,在使用spans.not(':first')时则需要1276毫秒。

这些数据是使用Firefox 11的console.time()console.timeEnd()函数获得的。

考虑到我必须进行10,000次迭代才能达到1秒的标准,我认为这并不重要?


你是否愿意加入对@Felix Kling的切片方法进行比较的建议,因为一些评论者认为它更好? - Chris
1
当然可以!使用 slice(1) 方法,相同的测试结果为79毫秒 - 比 :gt(0) 快约10倍。 - Robin Whittleton
我认为:not:first会更快,感谢测试。另外,对于slice(1)的比较也加一分。 - Chuck Norris
非常有趣,谢谢分享。我会记住这个以备后用。 - OptimusCrime

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接