jQuery类选择器性能混淆

问题描述

| 那么
$(\'table.selectable td.capable input:text\')
$(\'table.selectable td input:text\')
好吗?换句话说,指定类会加快还是减慢选择的速度(假设在这种情况下不是绝对需要的)?     

解决方法

        我没有检查Sizzle的实现,但是在最佳情况下,
td
将映射到类似getElementsByTagName()的地方,and3ѭ将映射到类似getElementsByClassName()的地方(如果可用)。因此,两者在速度上将是可比的。 但是,据我所知,尚无
getElementsByTagNameAndClassName()
方法,因此解决
td.capable
可能需要在DOM调用之后再进行一次过滤。因此,我很倾向于认为它会更慢。 自然地,一个基准肯定可以证明这一点。     ,        因此,我使用firebug进行了一些基准测试,在问题中列出的特定示例中,后者(没有td类说明符)速度更快。     ,        取决于上下文。 通常,需要进行的子检查越多,检查就越慢,因为每次检查都需要时间。关键是,它们显然不一定是相同的结果。一个是另一个的子集。 在大多数情况下,目标是使所需的选择器数量最少,以针对所需的特定集合。还要记住,某些选择器的性能要好得多(由于浏览器方法的可用性)。 ID选择器
#id
和现代浏览器中的标签选择器要比类搜索
.class
快得多,类搜索ѭ7require要求对
.className
参数进行迭代字符串分析,或者实际上是基于属性的搜索,通常这非常相似。 如有疑问,请执行指标。