Выбор HTML-элементов по атрибуту data в jQuery

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для выбора элементов по их data-атрибуту в jQuery используйте следующий синтаксис:

JS
Скопировать код
$('[data-attribute="value"]') // "Здравствуй, элемент! Ты отобран!"

Этот код отбирает все элементы, у которых data-attribute равен value. Готово! Теперь можно расслабиться и выпить кофе. Вы отобрали необходимые элементы!

Если же нужен более конкретный отбор, например, элемент 'a' c data-customerid="22", воспользуйтесь кодом:

JS
Скопировать код
$('a[data-customerid="22"]') // "Торт – это ложь, но не для data attribute!"

Такой способ отбора позволит вам подготовить элемент для дальнейших действий с использованием jQuery. Например, можно добавить класс:

JS
Скопировать код
$('a[data-customerid="22"]').addClass('highlight'); // "Покажи всем свою яркость, .highlight!"

Легко и эффективно, согласны?

Кинга Идем в IT: пошаговый план для смены профессии

Создание эффективных и совместимых селекторов

Использование строгого соответствия значений

Следующий приём поможет избежать случайного выбора элементов по частичному совпадению. Используйте строгое соответствие значений в data-атрибутах:

JS
Скопировать код
$('[data-some="specificValue"]') // "Этот атрибут уходит на рекорд 11"

Важность кавычек

Для совместимости необходимо заключать значение атрибутов в кавычки:

JS
Скопировать код
$('[data-example="42"]') // "42 – жизнь, Вселенная и всё прочее это значение data-атрибута!"

Универсальный метод

Эта техника подходит для любого элемента HTML с data-атрибутом:

JS
Скопировать код
$('div[data-status="active"]') // Обратите внимание на "active" divs в богатом разнообразии HTML-экосистемы

.data() против .attr() в jQuery

Чтение атрибутов с помощью .data()

При чтении значений data-атрибутов, весьма целесообразно использовать .data(), сохраняющий тип данных:

JS
Скопировать код
var exampleData = $('a').data('example'); // "Не трогай это... .data()!"

Установка атрибутов с помощью .attr()

Для задания data-атрибутов, можно использовать .attr():

JS
Скопировать код
$('element').attr('data-name', value); // "Бах! Новый атрибут проложил свой путь!"

Визуализация

Представьте, что мы находимся в цифровом пруду 🌊:

Markdown
Скопировать код
Цифровой пруд: [🐠, 🐟, 🌿, 🐠🎣, 🐚, 🐟]

Используем data-hook для улова определённой рыбы:

JS
Скопировать код
$('div[data-hook="magic-fish"]'); // "Ты не спрячешься, найду я тебя!"

И мы её поймали!

Markdown
Скопировать код
Поймано: [🐠🎣]

Вот и всё! Наш data-hook среагировал на волшебную рыбу, соответствующую нашему data-атрибуту! 🎣✨

Детальное изучение CSS-селекторов

Поиск частичных совпадений

Для того чтобы найти элементы с data-атрибутом, содержащим список, разделённый пробелами, используйте такой синтаксис:

JS
Скопировать код
$('[data-tags~="monday"]') // "Сделаем понедельник незабываемым"

Начало и окончание data-атрибутов

Поиск элементов, у которых data-атрибут начинается:

JS
Скопировать код
$('[data-filename^="report_"]') // "Ведь отчёт – это то, что хочется увидеть в первую очередь..."

Или заканчивается на:

JS
Скопировать код
$('[data-url$=".com"]') // "Добро пожаловать в мир .com"

Выборка без jQuery

В условиях использования native JavaScript пользуйтесь следующим форматом:

JS
Скопировать код
document.querySelectorAll('[data-customerID="22"]') // "Ха-ха, я могу и без jQuery! (Шутка лишь, jQuery, мы все тебя любим ❤)"

Избегаем универсального селектора

С целью предотвращения проблем с читаемостью кода не используйте универсальный селектор *. Обязательно уточняйте тег элемента:

JS
Скопировать код
$('*[data-role="admin"]') // Опасно! Это неправильный подход, разработчик!
$('div[data-role="admin"]') // Правильно, молодец, наслаждайся своим заслуженным угощением 🍪!

Работа с data-атрибутами в HTML

Пример объявления data-атрибутов в HTML:

HTML
Скопировать код
<a href="#" data-customerid="22">Ссылка</a> // ПРИГЛАШЕНИЕ... ПРИНЯТО

Пропуск кавычек

Пропускайте кавычки только в том случае, когда значение data-атрибута не содержит специальных символов:

JS
Скопировать код
$('[data-some=value]') // "Живу на грани... тонкостей селекторов"

Полезные материалы

  1. Attribute Contains Selector | jQuery API Documentation – Официальная документация по селекторам jQuery.
  2. Using data attributes | MDN – Обзор использования HTML, JavaScript и data-атрибутов от Mozilla Developer Network.
  3. jQuery Selectors | W3Schools – Изучение на интерактивных примерах от W3Schools!
  4. Complete Guide to Data Attributes | CSS-Tricks – Поскольку знание – сила!
  5. How to find an element based on a data-attribute value?| Stack Overflow – FAQ на Stack Overflow всегда придёт вам на помощь!
  6. Use HTML5 Data Attributes | SitePoint – Узнайте, почему HTML5 и data-атрибуты – это отличное сочетание.
  7. jQuery – Selectors | TutorialsPoint – Расширьте свои знания благодаря урокам от TutorialsPoint!