jQuery类选择器性能(困惑)

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

我没有检查Sizzle实现,但在最好的情况下, td会映射到像getElementsByTagName()和.capable这样的东西,如getElementsByClassName() ,如果可用的话。 所以两者在速度方面都具有可比性。

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

当然,基准测试肯定会说明问题。

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

取决于具体情况。

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

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

如有疑问,请执行指标。