Селекторы по атрибутам в jQuery расширяют стандартный набор CSS-селекторов и позволяют избирательно находить элементы по наличию, значению или совпадению части значения атрибута. Это делает работу с динамическими формами, конфигурационными данными и нестандартными HTML-структурами особенно удобной.
Синтаксис: [attr] Выбирает все
элементы, у которых присутствует указанный атрибут, независимо от
значения.
$('input[required]').addClass('marked');
Синтаксис: [attr="value"] Соответствует
элементам, у которых значение атрибута совпадает полностью.
$('a[target="_blank"]').each(function() {
// обработка ссылок, открывающихся в новом окне
});
Синтаксис: [attr~="value"] Ищет
значение среди слов, разделённых пробелами.
$('div[class~="item"]').hide();
Синтаксис: [attr|="value"] Используется
для совпадения по языковым тегам или значениям, содержащим дефис.
Совпадает с value и value-*.
$('meta[http-equiv|="content"]').remove();
Синтаксис: [attr^="value"] Совпадение,
если значение атрибута начинается с указанной строки.
$('img[src^="/assets/"]').addClass('local-image');
Синтаксис: [attr$="value"]
Соответствует элементам, у которых значение атрибута заканчивается на
указанную строку.
$('script[src$=".min.js"]').prop('async', true);
Синтаксис: [attr*="value"] Ищет
значение value в любой части атрибута.
$('a[href*="docs"]').addClass('docs-link');
Селекторы могут объединяться между собой и с обычными CSS-селекторами, что позволяет формировать точные выборки.
$('input[type="text"][data-role="search"]').val('');
$('div.item[data-state="active"] span[name="title"]').toggle();
jQuery предоставляет функцию .filter(), позволяющую
применять селекторы атрибутов к уже найденному набору элементов.
$('input')
.filter('[required]')
.filter('[type="email"]')
.addClass('email-required');
Ключевые моменты:
form.find('input[required]') работает
заметно эффективнее, чем $('input[required]') при большом
DOM.Селекторы по атрибутам подходят для:
Работы с HTML5-атрибутами данных
(data-*)
$('[data-id="42"]').addClass('highlight');
Адаптивных форм
$('input[required]').on('blur', validate);
Модульных компонентов
$('[data-component="tabs"][data-active="true"]').addClass('open');
Разработка интерфейсов нередко возлагает на атрибуты роль конфигурационных ключей, которые управляют поведением скриптов, состоянием компонентов и способами стилизации. Селекторы по атрибутам в jQuery обеспечивают ровно тот уровень гибкости, при котором декларативная разметка становится самодостаточным описанием взаимодействия.