2012-12-26 4 views
13

Ich habe diese Arbeit:jQuery Selektoren und HTML5 Daten- * Attribute gesetzt dynamisch

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

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

Aber das andere funktioniert nicht und ich weiß nicht, wie zu lösen:

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

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

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

Warum Ich kann die data- * HTML5-Attribute nicht von jQuery aus setzen und damit ein DOM-Objekt auswählen ???

Lot Dank

+0

Ist Ihre Frage "warum" oder "wie zu lösen"? Vielleicht sehen Sie sich http://stackoverflow.com/questions/13094777/find-elements-by-custom-data-attribute-value/13094850#13094850 an. – pimvdb

+0

mögliches Duplikat von [Warum ändert sich nicht zu jQuery $ .fn.data() aktualisiert die entsprechenden html 5 Daten - \ * Attribute?] (Http://stackoverflow.com/questions/5507718/why-dont-changes- to-jquery-fn-daten-update-the-korrespondent-html-5-data-a) – itsadok

Antwort

35

Die data- Attribut jQuery data() ist eine Mapping-Richtung. Sie sollten die Funktion attr() verwenden, wenn Sie das Attribut tatsächlich auf dem Knoten setzen möchten.

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

Vom docs:

Die Daten- Attribute werden in dem ersten Mal, wenn die Daten-Eigenschaft gezogen wird zugegriffen, und dann werden nicht mehr zugegriffen werden oder mutiert (alle Datenwerte werden dann intern in jQuery gespeichert)

+2

Ich liebe dich! Wunderbar arbeiten! –

+1

Es ist ziemlich verrückt, dass jQuery eigenen Selektor für Daten nicht berücksichtigt und überprüft seinen Datencache. Macht '.data()' weniger nützlich und die Quelle von schwer zu aufdeckenden Fehlern. – Thor84no