Tengo un div con un atributo data-myval = "10"
. Quiero actualizar su valor; ¿No cambiaría si lo uso div.data('myval',20)
? ¿Necesito usar div.attr('data-myval','20')
solo?
¿Me estoy confundiendo entre HTML5 y jQuery? Por favor avise. ¡Gracias!
EDITAR: actualizado div.data('myval')=20
a div.data('myval',20)
, pero aún el HTML no se actualiza.
jquery
html
custom-data-attribute
Pulkit Mittal
fuente
fuente
div
? ¿Un objeto o elemento jQuery?div.data('myval')=20
no funcionaría para almacenar un valor solo porque la sintaxis es incorrecta; vea las respuestas para la sintaxis correcta. Pero tenga en cuenta que en.data()
realidad no actualiza el atributo del elemento , almacena los datos en otro lugar.Respuestas:
HTML
JS
Manifestación
Referencia
De la referencia:
Cabe señalar que jQuery's
data()
no cambia eldata
atributo en HTML.Entonces, si necesita cambiar el
data
atributo en HTML, debe usarlo.attr()
en su lugar.HTML
JS:
Ver esta demo
fuente
data()
deget
yset
HTML 5-atributos de datos.[data-myval="10"]{ color: red; }
, daría estilo a la etiqueta según el valor del atributo de datos.También puede usar lo siguiente
attr
;HTML
Guión
O
fuente
Tenga en cuenta que jQuery
.data()
no se actualiza cuando cambia losdata-
atributos html5 con javascript.Si usa jQuery
.data()
para establecerdata-
atributos en elementos HTML, es mejor que use jQuery.data()
para leerlos. De lo contrario, puede haber inconsistencias si actualiza los atributos dinámicamente. Por ejemplo, véasesetAttribute()
,dataset()
,attr()
a continuación. Cambie el valor, presione el botón varias veces y vea la consola.Mostrar fragmento de código
fuente
Solución Javascript Vanilla
HTML
JavaScript:
Usando la
getAttribute()
propiedad de DOMUsando la
dataset
propiedad de JavaScriptfuente
Si está utilizando jQuery, use
.data()
:Puede almacenar datos arbitrarios con
.data()
, pero está restringido a solo cadenas cuando se usa.attr()
.fuente
.data()
método no actualiza losdata-
atributos , es decir, los datos que almacena no terminan en un atributo (es por eso que puede almacenar valores que no son cadenas) a pesar de que puede recuperar el valor de undata-
atributo. Aunque sospecho que el OP realmente no necesita establecer atributos , aunque eso es lo que hizo la pregunta..attr()
para recuperar el atributo). Simplemente pensé que valía la pena señalarlo dado que el OP explícitamente (si tal vez por error) preguntó sobre la actualización de los atributos..attr()
si realmente no está actualizando "el html", está actualizando el DOM. Cuando le pide al navegador que le proporcione el "html" (ya sea por.html()
el DOMelement.innerHTML
), el navegador lo está regenerando de manera efectiva según el estado del DOM en ese momento. Algo así como.[jQuery] .data () vs .attr () vs .extend ()
El método jQuery
.data()
actualiza un objeto interno administrado por jQuery mediante el uso del método, si estoy en lo correcto.Si desea actualizar su
data-attributes
con un poco de propagación, utilice -De lo contrario,
$('body').attr('data-test', 'text');
funcionará bien.Otra forma de lograr esto es usando:
- que restringe cualquier cambio de atributo a
HTMLElement.prototype.dataset
, no cualquier adicionalHTMLElement.prototype.attributes
.fuente
Otra forma de establecer el atributo de datos es usar la propiedad del conjunto de datos .
fuente
Para mantener jQuery y el DOM sincronizados, una opción simple puede ser
fuente