Ich habe ein Div mit einem Attribut data-myval = "10"
. Ich möchte seinen Wert aktualisieren. würde es sich nicht ändern, wenn ich benutze div.data('myval',20)
? Muss ich div.attr('data-myval','20')
nur verwenden?
Bin ich verwirrt zwischen HTML5 und jQuery? Bitte beraten. Vielen Dank!
BEARBEITEN: Aktualisiert div.data('myval')=20
auf div.data('myval',20)
, aber der HTML-Code wird immer noch nicht aktualisiert.
jquery
html
custom-data-attribute
Pulkit Mittal
quelle
quelle
div
? Ein jQuery-Objekt oder -Element?div.data('myval')=20
würde nicht funktionieren, um einen Wert nur zu speichern, weil die Syntax falsch ist - siehe die Antworten für die richtige Syntax. Beachten Sie jedoch, dass.data()
das Elementattribut nicht aktualisiert wird, sondern die Daten an anderer Stelle gespeichert werden.Antworten:
HTML
JS
Demo
Referenz
Aus der Referenz:
Es ist zu beachten, dass jQuery's
data()
dasdata
Attribut in HTML nicht ändert .Wenn Sie also das
data
Attribut in HTML ändern müssen , sollten Sie.attr()
stattdessen verwenden.HTML
JS:
Siehe diese Demo
quelle
data()
zuget
undset
HTML-5 Datenattribute.[data-myval="10"]{ color: red; }
, die das Tag entsprechend dem Wert des Datenattributs formatiert .Sie können auch Folgendes verwenden
attr
:HTML
Skript
ODER
quelle
Bitte beachten Sie, dass jQuery
.data()
nicht aktualisiert wird, wenn Sie HTML5-data-
Attribute mit Javascript ändern .Wenn Sie mit jQuery Attribute in HTML-Elementen
.data()
festlegendata-
, sollten Sie diese mit jQuery.data()
lesen. Andernfalls kann es zu Inkonsistenzen kommen, wenn Sie die Attribute dynamisch aktualisieren. Siehe zum BeispielsetAttribute()
,dataset()
,attr()
unten. Ändern Sie den Wert, drücken Sie die Taste mehrmals und sehen Sie die Konsole.Code-Snippet anzeigen
quelle
Vanille-Javascript-Lösung
HTML
JavaScript:
Verwenden der DOM-
getAttribute()
EigenschaftVerwenden der JavaScript-
dataset
Eigenschaftquelle
Wenn Sie jQuery verwenden, verwenden Sie
.data()
:Sie können beliebige Daten mit speichern
.data()
, sind jedoch bei der Verwendung nur auf Zeichenfolgen beschränkt.attr()
.quelle
.data()
Methode nicht nicht aktualisierendata-
Attribute - das heißt, die Daten speichert er nicht in einem Attribute am Ende (weshalb es nicht-String - Werte speichern kann) , auch wenn sie den Wert von einem abrufen kanndata-
Attribute. Obwohl ich vermute, dass das OP keine Attribute festlegen muss , obwohl dies die Frage ist..attr()
zum Abrufen des Attributs verwendet wird). Ich dachte nur, es wäre erwähnenswert, da das OP explizit (wenn auch fälschlicherweise) nach der Aktualisierung von Attributen fragte..attr()
Sie, dass Sie das DOM aktualisieren , auch wenn Sie "das HTML" nicht wirklich aktualisieren. Wenn Sie den Browser auffordern, Ihnen das "HTML" (ob von.html()
oder das DOMelement.innerHTML
) zu geben, generiert der Browser es basierend auf dem aktuellen Status des DOM effektiv für Sie neu. Art von.[jQuery] .data () vs .attr () vs .extend ()
Die jQuery-Methode
.data()
aktualisiert ein von jQuery verwaltetes internes Objekt mithilfe der Methode, wenn ich richtig bin.Wenn Sie Ihre
data-attributes
mit etwas Verbreitung aktualisieren möchten , verwenden Sie -- Andernfalls
$('body').attr('data-test', 'text');
funktioniert es einwandfrei.Eine andere Möglichkeit, dies zu erreichen, ist die Verwendung von -
- was jede Attributänderung auf beschränkt
HTMLElement.prototype.dataset
, nicht auf zusätzlicheHTMLElement.prototype.attributes
.quelle
Eine andere Möglichkeit, das Datenattribut festzulegen, ist die Verwendung der Dataset- Eigenschaft.
quelle
Um jQuery und das DOM synchron zu halten, kann eine einfache Option sein
quelle