2012-12-26 13 views
13

mam tej pracy:selektorów jQuery i HTML5 data- * atrybuty ustawione dynamicznie

<div data-people="australian">Australian people eats...</div> 

    <script type="text/javascript"> 
    alert($("[data-people=australian]").html()); 
    </script> 

Ale ten drugi nie działa i nie wiem jak go rozwiązać:

<div id="mich">Australian people eats...</div> 

    <script type="text/javascript"> 
    $("#mich").data("people", "australian"); 

    alert($("[data-people=australian]").html()); 
    </script> 

Dlaczego Nie mogę ustawić atrybutów danych * * HTML5 z jQuery i użyć ich do wybrania obiektu DOM ???

Wiele dzięki

+0

Czy Twoje pytanie "dlaczego" lub "jak rozwiązać"? Może spojrzeć na http://stackoverflow.com/questions/13094777/find-elements-by-custom-data-attribute-value/13094850#13094850. – pimvdb

+0

możliwy duplikat [Dlaczego zmiany w jQuery $ .fn.data() nie aktualizują odpowiednich danych html 5 - \ * atrybuty?] (Http://stackoverflow.com/questions/5507718/why-dont-changes- to-jquery-fn-data-update-the-correspond-html-5-data-a) – itsadok

Odpowiedz

35

atrybutu danych jQuery() mapowanie jest jednym kierunku data-. Powinieneś użyć funkcji attr(), jeśli chcesz faktycznie ustawić atrybut w węźle.

$("#mich").attr("data-people", "australian"); 

Z docs:

The data- atrybuty są ciągnięte w po raz pierwszy nieruchomość dane są dostępne, a potem już nie są dostępne lub zmutowane (wartości wszystkie dane są przechowywane wewnętrznie w jQuery)

+2

Kocham cię! Działa wspaniale! –

+1

To dość szalone, że własny selektor danych jQuery nie bierze tego pod uwagę i nie sprawdza jego pamięci podręcznej danych. Sprawia, że ​​'.data()' jest mniej użyteczny i źródłem trudnych do zlokalizowania błędów. – Thor84no

Powiązane problemy