#jquery #performance #selector
#jquery #Производительность #селектор
Вопрос:
Я нашел статью об этом год назад, но не могу найти ее сейчас, и все другие статьи, которые я нахожу, не совсем полны.
Я хочу составить окончательный список самых быстрых способов выбора элементов в jQuery
Насколько я понимаю, если бы у меня было следующее
<body>
<div id="container">
<ul class="count">
<li>One</li>
<li>Two</li>
<li class="selected">Three</li>
</ul>
</div>
</body>
В порядке скорости (от самой быстрой к самой медленной)
Выбор по идентификатору:
$('#container')
Выбор по элементу:
$('div')
Выберите по классу с помощью элемента
$('ul.count')
Выберите по части идентификатора элемента с помощью элемента (в данном случае заканчивается на)
$("div[id$='tainer']")
Выбор по классу
$('.count')
Выберите по части идентификатора элемента (в данном случае заканчивается на)
$("[id$='tainer']")
Это в правильном порядке скорости и я пропустил что-нибудь?
Спасибо
Комментарии:
1. где выбирается по элементу с помощью класса и идентификатора?
2. возможно, вы найдете счастье с сайтом jsperf . Например, этот тест хорош, а этот превосходен! но лучше всего вы можете написать свой собственный 😉
3. Поиск по идентификатору не может быть сверху. Если вы примените контекст элемента к селектору как $(‘#myTxtBox’,’#divContainer’), он будет выделяться на вершине.
Ответ №1:
производительность селекторов зависит от нескольких факторов. браузер является основным фактором, с шипением / querySelectorAll / jsengine и версией jquery, которые их используют. В принципе, jquery улучшает производительность в каждой версии и хорошо справляется с выбором наилучшего доступного метода в зависимости от браузера.
Любые обновления в браузере, движке js или самом jquery могут вызвать новый метод «наилучшего исполнения». Более того, в зависимости от размера и глубины данных метод может внезапно стать быстрее другого. И это не говоря уже о самом запросе. например, $(‘#id .class’) может не использовать тот же «движок», что и $(‘#id’).find(‘.class’) .
В целом, это не проблема, jquery достаточно оптимизирован. Когда я натыкаюсь на проблемы с производительностью, это никогда не связано с селекторами (но с .append(), большими, не делегированными событиями или плагинами и в целом: мое старое плохое кодирование).
если вам действительно, действительно нужна производительность в dom, вам нужно сравнить производительность с document.getElementById (если у вас есть идентификатор для его использования) и собственный document.querySelectorAll’, который, кажется, является самым быстрым методом месяца.
Ответ №2:
вы должны посмотреть на это: в середине документа)
это может быть вычислено до значения