jQuery选择器:抓取子集的子集哪个更快?

时间:2010-10-11 12:55:47

标签: jquery performance dom jquery-selectors

关注this问题,我有以下两个选项:

$("tr td").slice(3, 6);

可能是这样的(从算法来讲,我的意思是;我知道为每个元素创建新的查询字符串有点傻):

var subset = $( "tr td:nth-child(4)" );
for(var i=4; i<7; i++) subset.add( "tr td:nth-child("+i+")" );

哪个会更有效率?会有另一种更有效的解决方案吗?

2 个答案:

答案 0 :(得分:3)

第一个($("tr td").slice(3, 6))的执行速度要快得多,因为它是单个选择器引擎调用,但一如既往,请测试它!

我设置了一个性能测试,您可以在此处自行检查(和其他答案):http://jsperf.com/slice-performance-test

答案 1 :(得分:0)

在第一段代码中,您计算​​一次$('tr td')并获得切片。

在第二个代码中,您计算​​$('tr td') 4次,然后每次提取第4个到第7个孩子。

因此第一个代码更快。事实上,它也更容易阅读。