Селектор Jquery, я должен указать тип HTML-тега? - PullRequest
5 голосов
/ 04 января 2011

У меня много HTML-тегов с class = 'class1'.Все они оказываются / и всегда будут элементами одного типа.Например, элементы ввода.

Есть ли разница в производительности между

$("input.class1")

и

$(".class1")

Спасибо!

ПРИМЕЧАНИЕ. В этом случае янужна информация, относящаяся конкретно к IE8, однако важно упомянуть о кросс-браузерном решении, мои клиенты могут использовать только IE8, поэтому лучший ответ будет иметь лучший ответ специально для IE8.

Ответы [ 3 ]

5 голосов
/ 04 января 2011

Да, разница в производительности. Последний позволяет механизму выбора использовать собственный метод getElementsByClassName, который существует в большинстве основных браузеров, и должен быть немного быстрее в браузерах, которые не поддерживают этот метод или querySelectorAll. Первый будет быстрее в браузерах, которые поддерживают querySelectorAll, но не getElementsByClassName (что в значительной степени просто IE 8), но, вероятно, все еще не так быстро, как последний для вашей ситуации.

Для вашего сценария используйте $(".class1").

1 голос
/ 04 января 2011

Я не уверен, но я думаю, что есть разница.

В примере # 1 есть только входные элементы для прохода и выборки элементов с заданным className, это должно быть (много?) быстрее, чем обходить все узлы-элементы (как в примере №2)

Также должно зависеть от версии браузера, я думаю, jQuery также будет использовать такие вещи, как getElementsByClassName () или querySelectorAll (), если доступно.

0 голосов
/ 04 января 2011

Да, включение имени элемента даст вам выигрыш в производительности, поскольку (для тех браузеров, которые не поддерживают getElementsByClassName изначально или хорошо), это позволяет браузеру сначала сократить документ, используя стандартный метод getElementsByTagName,а затем только искать среди тех, кто для класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...