Какова относительная производительность селекторов псевдо-класса и пользовательских настроек? - PullRequest
4 голосов
/ 16 апреля 2010

Насколько я понимаю, с точки зрения скорости селектора, селекторы #ID являются самыми быстрыми, за ними следуют селекторы элементов, а затем селекторы .class.

Я всегда предполагал, что селекторы псевдоклассов и пользовательские селекторы (в форме ': селектор') похожи на селекторы .class, но я понял, что просто не уверен.

Я понимаю, что это зависит от сложности кода в псевдоклассе / пользовательском селекторе, поэтому я думаю, что мне хотелось бы узнать ответ, исключив его как фактор.

Любая помощь будет оценена.

Спасибо.

1 Ответ

3 голосов
/ 16 апреля 2010

Все сводится к тому, какие методы в DOM движок Sizzle (который jQuery использует для оценки селекторов) может использовать для поиска элементов.

Он может использовать методы getElementById и getElementsByTagName для быстрого получения элементов для определенного идентификатора и для конкретного имени тега. После этого он просто должен пройти через все найденные элементы и сравнить каждый из них с условиями, созданными из селектора.

Методы в DOM могут использоваться на любом элементе и использоваться в комбинации, поэтому, например, поиск всех элементов div внутри элемента с определенным идентификатором очень быстрый.

...