Intereting Posts
jQuery – Анимированная складная DIV, скользящая вверх? Нажмите, чтобы развернуть, приведет к свертыванию других открытых элементов? Изгиб изображения с помощью CSS / JS / jQuery? Селекторы jQuery: захват раздела дочерних элементов, имеющих данный тег Как выровнять псевдоэлемент: before: after и span element Нужно ли использовать HTML-очиститель, если я удаляю tags / конвертируя их в объекты HTML? Как заставить Chrome открывать несколько сайтов на новой вкладке Изображения в изображениях SVG не отображаются в Chrome, но отображаются локально? Как бы вы сделали два перекрытия ? jQuery не работает для динамически созданных элементов Установить выбранное значение, основанное на извлеченном из базы данных значении Объединить строки таблицы на основе текста и classа строки Как вставить текст в нижнюю часть страницы? Позиция Исправлено не работает в Chrome Проблема выравнивания html / css из-за пустого . Что переносит мой контент?

Рекомендации по написанию селекторов jQuery

В настоящее время я пишу очень явные селекторы в коде jQuery. Например, учитывая эту разметку

red green black

Я использую этот явный селектор

 var $select = $('.codeblue .codeyellow .codeorange .codewhite #codeChoice'); 

Было бы лучше сделать это вместо этого?

 var $codeBlue = $('.codeblue'); var $select = $codeBlue.find('#codeChoice'); 

Имеются ли какие-либо улучшения производительности при использовании явных селекторов?

Если вы используете конкретные идентификаторы, jQuery будет быстрее, потому что он использует собственный метод document.getElementById (); Поскольку ваш первый селектор включает в себя 4 classа (= медленное обнаружение) и 1 id (= быстрое обнаружение) и ваш второй селектор 1 class (= медленное обнаружение) и 1 идентификатор (= более быстрое обнаружение), второй будет быстрее.

Как правило, селектора будут быстрее, поскольку включены меньше штук.

На самом деле, поскольку идентификаторы уникальны, вы можете просто выбрать идентификатор с самого начала.

 var $select = $('#codeChoice'); 

Что касается вашего другого вопроса, нет простого ответа. Несколько селекторов могут вызвать замедление, но вам действительно нужно попытаться узнать. Кроме того, это зависит от браузера. Лучше всего проверить это, используя http://jsperf.com/

Кроме того, как отмечается в этом , вы должны позаботиться о том, чтобы поставить менее конкретный селектор слева, например:

 var $codeBlue = $('.codeblue #codeChoice'); 
 var $select = $("#codeChoice"); 

должно быть достаточно, так как id должен быть уникальным

Самый быстрый способ выбора элемента в jQuery – по ID. Доступ к элементу по идентификатору хорош для производительности. Поскольку идентификатор уникален на странице.

Высокопроизводительная Javascript книга

 var $select = $('#codeChoice");