2010-04-16 3 views
4

Я понимаю, что с точки зрения селекторной скорости эти #ID-селекторы являются самыми быстрыми, а затем селекторами элементов, а затем селекторами .class.Какова относительная производительность псевдокласса и пользовательских селекторов?

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

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

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

Спасибо.

+1

Я не могу представить себе какой-либо код, который замедляет вы думаете об оптимизации * selectors * ... –

+0

Я бы подумал, что целью плагинов было создание максимально оптимального кода - они не могут гарантировать что страницы, в которых их код используется, эффективны и хорошо структурированы. Любой, у кого ужасный HTML, всегда будет обвинять плагин в этом случае. Во всяком случае, я не очень хочу обсуждать достоинства оптимизации селекторов. Не стесняйтесь начинать новый вопрос, и я буду рад ответить там. –

+0

Ну, #ID будет иметь смысл, поскольку они должны быть уникальными; Тем не менее, я еще не измерил статистически значимую разницу в производительности (также, такие как jQuery, интеллектуально кэшируют селекторные поиски). – Piskvor

ответ

3

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

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

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

Смежные вопросы