jQuery类选择器性能(困惑)

时间:2011-05-30 18:20:58

标签: jquery performance jquery-selectors

$('table.selectable td.capable input:text')优于$('table.selectable td input:text')吗?换句话说,指定一个类加快或减慢选择(假设在这种情况下不是绝对必需的)?

3 个答案:

答案 0 :(得分:3)

我没有检查Sizzle实现,但在最好的情况下,td会将getElementsByTagName().capable映射到类似getElementsByClassName()的内容(如果可用)。所以两者在速度方面都具有可比性。

但是,据我所知,没有getElementsByTagNameAndClassName()方法,因此解析td.capable可能需要在DOM调用之后进行额外的过滤传递。所以,我更倾向于认为它会慢一些。

当然,基准测试肯定会有所说明。

答案 1 :(得分:3)

所以我用firebug进行了一些基准测试,在我在问题中列出的特定示例中,后者(没有td类说明符)更快。

答案 2 :(得分:0)

取决于具体情况。

通常,需要进行的子检查越多,每次检查的时间就越慢。关键是,它们显然不一定是相同的结果。一个是另一个的子集。

在大多数情况下,目标是只需要最少数量的选择器来定位您需要的特定集合。还要记住,某些选择器的性能远远高于其他选择器(由于浏览器方法的可用性)。 ID选择器#id和现代浏览器标签选择器,比类搜索.class快得多,这需要对.className参数进行迭代字符串分析,或者确实基于属性的搜索,这很多同样通常。

如果有疑问,请执行指标。