Как характеристики производительности селекторов jQuery отличаются от характеристик селекторов CSS? - PullRequest
2 голосов
/ 04 декабря 2009

Вчера я столкнулся с надстройкой Google Page Speed ​​для Firebug. Страница об использовании эффективных селекторов CSS, в которых сказано, что они не используют переквалифицированные селекторы, то есть используйте #foo вместо div#foo. Я думал, что последний будет быстрее, но Google говорит иначе, и кто я такой, чтобы пойти против этого?

Так что мне стало интересно, применяется ли то же самое к селекторам jQuery. Эта страница Я обнаружил, что ссылка на SO говорит, что я должен использовать $("div#foo"), что я и делал все время, так как я думал, что все ускорится, ограничив селектор, чтобы соответствовать div элементам только. Но действительно ли это лучше, чем писать $("#foo"), как говорит Google для селекторов CSS, или же сопоставление элементов CSS и jQuery работает по-разному, и я должен придерживаться $("div#foo")?

Ответы [ 3 ]

5 голосов
/ 04 декабря 2009

$("#foo") лучше, чем $("div#foo")

Поскольку идентификатор уникален в документе, вам не нужно ставить перед ним имя тега.

Вот хорошая ссылка

Правила производительности jQuery

1 голос
/ 04 декабря 2009

Чем конкретнее селектор, тем быстрее Sizzle (механизм выбора jQuery) находит этот объект.

Причина: getElementsByTagName используется для сужения поиска до нескольких случаев.

Но это не относится к уникальным идентификаторам!

1 голос
/ 04 декабря 2009

Sizzle Selector Engine анализирует селекторы справа налево.

Максимально используйте идентификаторы для повышения производительности.

...