$('table.selectable td.capable input:text')
优于$('table.selectable td input:text')
吗?换句话说,指定一个类加快或减慢选择(假设在这种情况下不是绝对必需的)?
答案 0 :(得分:3)
我没有检查Sizzle实现,但在最好的情况下,td
会将getElementsByTagName()和.capable
映射到类似getElementsByClassName()的内容(如果可用)。所以两者在速度方面都具有可比性。
但是,据我所知,没有getElementsByTagNameAndClassName()
方法,因此解析td.capable
可能需要在DOM调用之后进行额外的过滤传递。所以,我更倾向于认为它会慢一些。
当然,基准测试肯定会有所说明。
答案 1 :(得分:3)
所以我用firebug进行了一些基准测试,在我在问题中列出的特定示例中,后者(没有td类说明符)更快。
答案 2 :(得分:0)
取决于具体情况。
通常,需要进行的子检查越多,每次检查的时间就越慢。关键是,它们显然不一定是相同的结果。一个是另一个的子集。
在大多数情况下,目标是只需要最少数量的选择器来定位您需要的特定集合。还要记住,某些选择器的性能远远高于其他选择器(由于浏览器方法的可用性)。 ID选择器#id
和现代浏览器标签选择器,比类搜索.class
快得多,这需要对.className
参数进行迭代字符串分析,或者确实基于属性的搜索,这很多同样通常。
如果有疑问,请执行指标。