Wybierz elementy, które wcześniej ustawiłem jquery.data();
tzn. Wybierz wszystkie elementy, .data('myAttr')
które zostały już ustawione.
ROZWIĄZANIE
Jsfiddle do zaprezentowania to Fiddle
javascript
jquery
jquery-selectors
Argiropoulos Stavros
źródło
źródło
$('[data-myAttr]')
Najlepszym i najprostszym sposobem ich wybrania jest:
Więcej informacji:
Przetestowałem wiele rzeczy.
Używanie
$('[data-myAttr!=""]')
nie działa we wszystkich przypadkach. Bo elementy, które nie majądata-myAttr
zbioru, będą miały swojedata-myAttr
równeundefined
i$('[data-myAttr!=""]')
te też będą wybierać, co jest niepoprawne.źródło
Możesz użyć filtra () :
źródło
$('[data-myAttr]')
?data()
, że forma pobierająca rzeczywiście czytadata-
atrybuty HTML5 , ale jej forma ustawiająca nie tworzy ich ani nie aktualizuje.Możesz użyć tego rozszerzenia jQuery Selector: Zapytanie o dane elementu
źródło
Możesz użyć interfejsu użytkownika JQuery z selektorem: data ()
Sprawdź na przykład ten plik jsfiddle
Aby dopasować wszystkie elementy
.data('myAttr')
, możesz użyćPowinno to działać zarówno w przypadku elementów z
data-
atrybutami, jak i elementów z danymi przechowywanymi przy użyciu funkcji$.data()
ponieważAle to nie działa zbyt dobrze. Sprawdź to jsfiddle, a zobaczysz, że przy drugim wywołaniu selektora powinien on pasować do 2 elementów i pasuje tylko do jednego. Jest to spowodowane "błędem" w bibliotece jquery-ui.
Jest to pobierane z podstawowego pliku jquery-ui.
Jak widać, używają
$.data(elem, match)
zamiast tego,$(elem).data(match)
co powoduje, że pamięć podręczna nie jest aktualizowana w przypadku, gdy żądasz elementów zdata-
atrybutami. Jeśli element został przetestowany pod kątemdata()
przechowywania, działa to dobrze, ale jeśli nie, nie zostanie uwzględniony w wynikowych dopasowaniach.Może to wcale nie być błąd, jeśli chcesz dopasować tylko elementy do informacji o danych ustawionych przez Ciebie, ale jeśli nie, masz dwie opcje.
Nie używaj jquery-ui i rozszerzaj swój własny pseudo-selektor
$(:mydata(myAttr))
Pokaż fragment kodu
Użyj jquery-ui z
:data
pseudoselektorem i połącz wyniki wyboru,[data-myAttr]
aby uwzględnić te, które mogą zostać pominiętePokaż fragment kodu
źródło
źródło
Spróbuj wykorzystać
jQuery.data()
jsfiddle http://jsfiddle.net/xynZA/142/
źródło
html
data-*
ustawiony atrybut, a takżejQuery.data()
ustawiony?