Dado este CSS:Navegadores no observar cambios en Data- *, Propiedades de selector de atributos CSS No volviendo
[data-myplugin-object="blue-window"]{
background-color: #00f;
}
[data-myplugin-object="red-window"]{
background-color: #f00;
}
Y esto jQuery:
$('[data-myplugin-object="blue-window"]').each(function(event){
$(this).data({
'myplugin-object': 'red-window'
});
});
Y este fragmento HTML:
<div data-myplugin-object="blue-window">
<p>Hello world</p>
</div>
Ahora, uno esperaría que cuando se ejecuta el fragmento jQuery (se aplaza apropiadamente hasta la carga de la página se completa, por supuesto,) mi ventana azul (que inicialmente se procesa como azul) se volvería roja.
No, ciertamente no; y el uso de Firebug y Developer Tools en Firefox y Chrome respectivamente, no puedo observar ningún cambio en los atributos data-*
.
Para que el navegador (y cajas de herramientas DOM para el caso) para observar los cambios, necesito para volver a .attr()
o hay una solución para esto?
Gracias @ jfriend00 - clases CSS son obviamente más apropiado para el caso de que labra exclusivamente los elementos, sin embargo estoy trabajando en una plugin y quería implementar algunos estilos predeterminados basados en la relevancia semántica de los atributos personalizados (* relevancia para el diseño *) Por supuesto, estos están destinados a ser reemplazados con selectores CSS de mayor especificidad (* como '.classes' *) en cualquier caso, si el método '.attr()' es mi mejor opción, entonces esa es la dirección que tomaré. ¿'.data()' proporciona alguna otra funcionalidad subyacente que pueda perderse con este cambio? (* aparte de los mapas de soporte, etc. *) – Dan
La principal funcionalidad de adicionalidad que conozco para '.data()' está relacionada con los enlaces de memoria cuando se usan cosas que no sean cadenas simples (por ejemplo, referencias de objetos). No solo evita las referencias DOM circulares, sino que también asegura que todo lo que tenga referencia a través de '.data()' se elimine si elimina el objeto DOM a través de jQuery. Si solo está usando cadenas, no creo que ofrezca mucha funcionalidad adicional para usted. Si lo hace mucho, es posible que desee ver el rendimiento y el uso de la memoria de un atributo DOM frente a la forma jQuery. – jfriend00