Jquery 伪类和自定义选择器的相对性能如何?

Jquery 伪类和自定义选择器的相对性能如何?,jquery,jquery-selectors,custom-selectors,Jquery,Jquery Selectors,Custom Selectors,我的理解是,就选择器速度而言,#ID选择器最快,其次是元素选择器,然后是类选择器 我一直认为伪类选择器和自定义选择器(形式为“:selector”)类似于.class选择器,但我意识到我只是不确定 我意识到这确实取决于伪类/自定义选择器中代码的复杂性,所以我想我想知道排除这个因素后的答案 任何帮助都将不胜感激 谢谢。这一切都取决于Sizzle引擎(jQuery用于计算选择器)可以使用DOM中的哪些方法来查找元素 它可以使用getElementById和getElementsByTagName方法

我的理解是,就选择器速度而言,#ID选择器最快,其次是元素选择器,然后是类选择器

我一直认为伪类选择器和自定义选择器(形式为“:selector”)类似于.class选择器,但我意识到我只是不确定

我意识到这确实取决于伪类/自定义选择器中代码的复杂性,所以我想我想知道排除这个因素后的答案

任何帮助都将不胜感激


谢谢。

这一切都取决于Sizzle引擎(jQuery用于计算选择器)可以使用DOM中的哪些方法来查找元素

它可以使用
getElementById
getElementsByTagName
方法快速获取特定id和特定标记名的元素。之后,它只需循环遍历所有找到的元素,并将每个元素与从选择器创建的条件进行比较


DOM中的方法可以用于任何元素,并且可以组合使用,例如,在一个具有特定id的元素中查找所有
div
元素非常快。

我不可能想象有任何代码会让您在考虑优化选择器时变慢……我本以为插件编写者的目标是尽可能获得最优的代码-他们无法保证在页面中使用他们的代码有效且结构良好。在这种情况下,任何拥有可怕HTML的人都会责怪插件。无论如何,我并不真的希望就优化选择器的优点展开辩论。请随意开始一个新的问题,我很乐意回答。嗯,#ID会有意义,因为它们应该是独一无二的;然而,我还没有测量到任何统计上显著的性能差异(还有,像jQuery这样的框架智能地缓存选择器查找)。@Adam:它正在评估选择器,而jQuery库(特别是Sizzle引擎)做了大量工作。因此,知道什么样的选择器速度快对于插件的可伸缩性来说是至关重要的。@Guffa:在我看来(如果你能证明我错了,请证明我错了),大多数处理时间都花在元素被选择后的操作上。或