Подтвердить что ты не робот

Производительность jQuery - выбор по данным-attr или по классу?

Что быстрее и почему? Выбор div (для потребностей плагина) на $('div[data-something]') или $('div.something')? Я склоняюсь к первому, поскольку он "чище".

На основе этот вопрос SO Я знаю, что я не должен использовать оба. Однако я не узнал, есть ли разница между ними.

4b9b3361

Ответ 1

Это зависит от браузера. Почти все браузеры теперь поддерживают querySelectorAll, и jQuery будет использовать его, когда это возможно. querySelectorAll может использоваться с селекторами присутствия атрибутов, поэтому, если там jQuery не нужно выполнять работу, он может выгрузить его в движок.

Для старых браузеров без querySelectorAll jQuery, очевидно, придется делать больше работы, но даже IE8 имеет его.

Как и в большинстве этих вещей, ваш лучший выбор:

  • Не беспокойтесь об этом до тех пор, пока вы не увидите проблему, и

  • Если вы видите проблему, просмотрите ее в браузерах, которые вы собираетесь поддерживать, а затем принимайте обоснованное решение.

Ответ 2

В Chrome 16, по крайней мере, нет разницы. Однако, если вы сделаете селектор классов менее конкретным (например, $(".test")), он превосходит другие методы:

enter image description here

Это было несколько неожиданно, потому что, как упоминает ShankarSangoli, я думал, что селектор класса div.test будет быстрее.

Ответ 3

Выбор по классу всегда быстрее, чем селектор атрибутов, потому что jQuery сначала пытается использовать собственный getElementByCalssName, если он поддерживается браузерами. Если он не использует querySelector, который использует селектор css для поиска элементов внутри страницы.