Das Ändern des Datenattributs funktioniert nicht

9

Ich versuche, ein Datenattribut zu ändern, aber es scheint nie verändert zu werden und bleibt als "TEXT", was der Standard ist.

%Vor%

Bitte helfen Sie

    
DavidB 22.10.2013, 14:14
quelle

2 Antworten

33

Die Methode .data ändert das Attribut data- HTML nicht; es ändert eine Variable, die jQuery intern speichert.

Wenn Sie das Attribut data- wirklich ändern wollen / wollen, tun Sie dies explizit mit der Methode .attr() :

%Vor%

Allerdings wird der von .data zurückgegebene Wert nicht geändert. jQuery ruft diesen Wert nur dann aus dem data- HTML-Attribut ab, wenn den intern gespeicherten Wert nicht finden kann. Wenn Sie $(el).data('original-title') nach dem Ändern des HTML-Attributs erneut abrufen, werden Sie feststellen, dass es sich nicht geändert hat.

Wenn dies ein Problem ist, verwenden Sie die .removeData() -Methode, um das intern gespeicherter Wert. Wenn Sie das nächste Mal .data() verwenden, wird jQuery feststellen, dass es fehlt, und das data- HTML-Attribut abrufen.

Schauen Sie sich um: Ссылка

HTML:

%Vor%

jQuery:

%Vor%

Jetzt sollten Sie sich in der Praxis keine Sorgen machen. Denken Sie daran, dass das data- -Attribut den ursprünglichen -Wert einer .data() -Variable und nicht unbedingt den aktuellen -Wert dieser Variablen darstellt, und Ihnen wird nichts passieren.

Zusammenfassend: Die Methode .data() ruft einen Wert aus dem HTML-Element einmal ab, wenn das Dokument geladen wird, und geht nicht also wieder so lange, wie die Variable intern gespeichert ist.

    
Blazemonger 22.10.2013, 14:17
quelle
2

Ihr Code: $(el).data('original-title', str);
sollte sein: $(el).attr('data-original-title', str);

.attr(); wird verwendet, um Attribute zu ändern, wenn sie in Schlüssel / Wert-Paaren verwendet werden.

Dokumentation hier

    
SidOfc 22.10.2013 14:16
quelle

Tags und Links