jQuery类选择器性能(混乱)



那么$('table.selectable td.capable input:text')$('table.selectable td input:text')更可取吗?换句话说,指定一个类是加速还是减慢选择(假设在这种情况下不是绝对需要)?

我没有检查Sizzle实现,但在最好的情况下,td会映射到类似getElementsByTagName()的东西,.capable会映射到像getElementsByClassName()这样的东西(如果可用的话)。因此,两者在速度上是相当的。

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

当然,一个基准可以肯定。

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

取决于上下文。

一般来说,需要进行的子检查越多,速度就越慢,因为每次都需要时间。重点是,它们显然不一定是相同的结果。一个是另一个的子集。

在大多数情况下,目标是拥有针对所需特定集合所需的最少数量的选择器。还要记住,一些选择器的性能要比其他选择器好得多(由于浏览器方法的可用性)。ID选择器#id和在现代浏览器中的标记选择器比类搜索.class快得多,后者需要对.className参数进行迭代字符串分析,或者实际上是基于属性的搜索,这通常非常相似。

如果有疑问,请执行度量。

最新更新