Выберите элементы, которые я ранее установил с помощью jquery.data();
т.е. выбрать все элементы с .data('myAttr')
уже установленными.
РЕШЕНИЕ
Jsfiddle для демонстрации - Fiddle
javascript
jquery
jquery-selectors
Аргиропулос Ставрос
источник
источник
$('[data-myAttr]')
Самый лучший и простой способ выбрать их:
Больше информации:
Много чего тестировал.
Использование
$('[data-myAttr!=""]')
работает не во всех случаях. Поскольку элементы, у которых нетdata-myAttr
набора, будут иметь ихdata-myAttr
равныеundefined
и$('[data-myAttr!=""]')
будут выбирать их, что неверно.источник
Вы можете использовать filter () :
источник
$('[data-myAttr]')
?data()
форма получателя действительно читаетdata-
атрибуты HTML5 , но форма установщика не создает и не обновляет их.Вы можете использовать это расширение jQuery Selector: запрос данных элемента
источник
Вы можете использовать JQuery UI с селектором: data ()
Посмотрите этот jsfiddle для примера
Чтобы все элементы совпадали,
.data('myAttr')
вы можете использоватьЭто должно работать как для элементов с
data-
атрибутами, так и для элементов с данными, хранящимися с использованием,$.data()
потому чтоНо это не очень хорошо работает. Отметьте этот jsfiddle и вы увидите, что при втором вызове селектора он должен соответствовать 2 элементам и соответствует только одному. Это связано с "ошибкой" в библиотеке jquery-ui.
Это взято из основного файла jquery-ui.
Как вы можете видеть, они используют
$.data(elem, match)
вместо этого,$(elem).data(match)
что приводит к тому, что кеш не обновляется, если вы запрашиваете элементы сdata-
атрибутами. Если элемент был протестирован наdata()
хранения, это работает хорошо, но в противном случае он не будет включен в результирующие совпадения.Это может быть вовсе не ошибкой, если вы хотите сопоставить только элементы с информацией о данных, установленной вами, но если нет, у вас остается два варианта.
Не используйте jquery-ui и не расширяйте собственный псевдоселектор
$(:mydata(myAttr))
Показать фрагмент кода
Используйте jquery-ui с
:data
псевдоселектором и объедините результаты выбора,[data-myAttr]
чтобы включить те, которые могут быть пропущеныПоказать фрагмент кода
источник
источник
Попробуйте использовать
jQuery.data()
jsfiddle http://jsfiddle.net/xynZA/142/
источник
html
data-*
атрибутом, а также сjQuery.data()
установленным?