Quiero asociar un objeto JavaScript con un elemento HTML. ¿Existe una forma sencilla de hacer esto?
Noté que HTML DOM define un método setAttribute y parece que esto está definido para un nombre de atributo arbitrario. Sin embargo, esto solo puede establecer valores de cadena. (Por supuesto, puede usar esto para almacenar claves en un diccionario).
Específicos (aunque estoy principalmente interesado en la pregunta general):
Específicamente, tengo elementos HTML que representan nodos en un árbol y estoy tratando de habilitar la función de arrastrar y soltar, pero el evento jQuery drop solo me dará los elementos que se arrastran y sueltan.
El patrón normal para llevar información a los controladores de eventos parece ser crear los elementos HTML al mismo tiempo que crea objetos JavaScript y luego definir los controladores de eventos cerrando estos objetos JavaScript; sin embargo, esto no funciona muy bien en este caso (podría tener un objeto global que se llena cuando comienza un arrastre ... pero esto se siente un poco desagradable).
fuente
data()
funciona al usar la respuesta que dio bobince, por lo que si aún no está usando jquery, también puede usar eso.Los objetos JavaScript pueden tener asignadas propiedades arbitrarias, no hay nada especial que tenga que hacer para permitirlo. Esto incluye elementos DOM; aunque este comportamiento no es parte del estándar DOM, ha sido el caso desde las primeras versiones de JavaScript y es totalmente confiable.
fuente
document.expando = false
romperá jQuery.data también?<td>
) y el objeto que asigné a este campo fue # toString'ed. Estaba muy confundido al ver td.scope === '[object Object]'.