jquery получить все элементы, соответствующие имени атрибута данных

19

Скажем, у меня есть несколько элементов со следующим атрибутом данных:

<data-my-key="blah">

, и я хочу привязать к ним событие, как это можно сделать?

Я пробовал несколько вещей, но не могу заставить его работать.

Моя последняя попытка:

$('data-my-key').click(...

и

$(document).find('data-my-key').click(...
    
задан Marty Wallace 20.11.2013 в 10:54
источник
  • Замечание о том, как вы используете селектор. Просто используя имя, выберете элемент. Смысл, то, как у вас было это с помощью только строки, $ ('div'). Click будет выбирать все элементы DIV. $ ('# div') будет выбирать элементы с id = 'div', а $ ('. div') будет выбирать элементы с классом = 'div'. Конечно, было бы странно дать элементу идентификатор или класс div, но это всего лишь пример синтаксиса выбора. –  Michael Khalili 14.12.2016 в 23:27

2 ответа

38

Вы можете использовать селектор атрибутов:

$('[data-my-key]').click(...

Обратите внимание, что jQuery хранит атрибуты data , добавленные после загрузки DOM во внутреннем кеше не как атрибут элемента, так что селектор не работает для них. В этом случае вам нужно будет использовать filter :

$(document).children().filter(function() {
    return $(this).data('my-key');
}).click(...;
    
ответ дан Rory McCrossan 20.11.2013 в 10:55
источник
  • чертовски !! - Я был так близок :) –  Marty Wallace 20.11.2013 в 10:55
7

Вы можете использовать селектор атрибутов и указать имя атрибута.

$('[data-my-key]').click...
    
ответ дан Adil 20.11.2013 в 10:55
источник