jQuery предоставляет мощный и гибкий механизм поиска элементов на
странице, основанный на использовании CSS-селекторов. Основная функция
для выбора элементов — $(), которая
принимает строку селектора или DOM-элемент и возвращает объект jQuery,
содержащий все найденные элементы.
var items = $('.menu-item'); // выбирает все элементы с классом menu-item
var header = $('#header'); // выбирает элемент с id header
Объект jQuery является массивоподобным: можно использовать
индексацию, методы .each(), .first(),
.last() и другие для работы с отдельными элементами.
По тегу: $('tagName') выбирает все
элементы данного типа.
$('p'); // все параграфы на страницеПо классу: $('.className') выбирает
все элементы с указанным классом.
По идентификатору: $('#id')
выбирает уникальный элемент с данным id.
Особенности:
jQuery поддерживает сложные CSS-селекторы:
$('.menu li.active'); // все li с классом active внутри элементов с классом menu
$('div#content p.highlight'); // все параграфы с классом highlight внутри div с id content
Можно комбинировать селекторы через запятую:
$('h1, h2, h3'); // выбирает все заголовки h1, h2 и h3
Методы фильтрации позволяют уточнить выборку:
.filter(selector) — оставляет
элементы, соответствующие селектору:
$('li').filter('.active'); // только активные элементы li.not(selector) — исключает
элементы, соответствующие селектору:
$('li').not('.disabled'); // все li, кроме элементов с классом disabled.eq(index) — выбирает элемент по
индексу (нумерация с 0):
$('li').eq(2); // третий элемент списка.first() и
.last() — выбирают первый и последний
элемент выборки.
jQuery предоставляет удобные методы для навигации по дереву DOM:
.children(selector) — возвращает
прямых потомков выбранного элемента, опционально с фильтром:
$('#menu').children('li'); // прямые элементы li внутри #menu.find(selector) — ищет все потомки
на любом уровне вложенности:
$('#menu').find('li.active'); // все активные элементы li внутри #menu.parent() и
.parents(selector) — переход к родительским
элементам:
$('li').parent(); // непосредственный родитель каждого li
$('li').parents('ul'); // все предки li, которые являются ul.closest(selector) — возвращает
ближайший подходящий элемент среди родителей, включая сам элемент:
$(this).closest('form'); // ближайшая форма, к которой принадлежит элемент:first / :last —
первый и последний элемент:
$('li:first'); // первый li:even / :odd — выбор
элементов по четным/нечетным индексам:
$('li:even'); // li с индексами 0, 2, 4...:eq(index) — элемент с конкретным
индексом:
$('li:eq(3)'); // четвертый элемент:gt(index) /
:lt(index) — элементы с индексами больше или
меньше заданного:
$('li:gt(2)'); // все элементы с индексом > 2
$('li:lt(2)'); // все элементы с индексом < 2:contains(text) — элементы,
содержащие указанный текст:
$('p:contains("jQuery")'); // все параграфы с текстом "jQuery"[attr] — все элементы с указанным
атрибутом:
$('input[name]'); // все input с атрибутом name[attr=value] — элементы с
атрибутом, равным значению:
$('input[type=text]'); // все текстовые поля[attr^=value] / [attr$=value] /
[attr*=value] — начинается с, заканчивается на,
содержит:
$('a[href^="https"]'); // ссылки на https
$('img[src$=".png"]'); // картинки в формате png
$('div[class*="menu"]'); // div с классом, содержащим menujQuery-объекты можно преобразовать в чистые DOM-элементы через индекс
или метод .get(index):
var domElement = $('#header')[0]; // первый элемент в виде DOM
var domElement2 = $('#header').get(0); // аналогично
Обратное создание jQuery-объекта из DOM:
var $element = $(domElement);
#id)
быстрее, чем классов и тегов, так как поиск оптимизирован
браузером..find() и фильтры,
чтобы ограничить область поиска и повысить производительность.var $activeItems = $('#menu').find('li.active'); // эффективнее, чем $('li.active') на всей странице
jQuery позволяет искать элементы не только при загрузке страницы, но и динамически после добавления новых элементов в DOM. В таких случаях удобно использовать делегирование событий:
$('#menu').on('click', 'li', function() {
$(this).toggleClass('selected');
});
Метод .on() гарантирует, что элементы, добавленные
позже, также будут реагировать на события.
Эти инструменты обеспечивают полное управление выборкой элементов на странице, позволяют строить эффективные и читаемые цепочки действий, а также гибко фильтровать и манипулировать DOM-структурой.