Memorizzare informazioni arbitrarie nei tag HTML per JavaScript?

Una domanda molto generale

Sto generando dynamicmente un modulo che è suddiviso in più livelli di tabs utilizzando HTML / JavaScript.

Voglio evidenziare alcuni dei campi (quelli che hanno un valore diverso da un modello globale) con un simbolo stella * usando CSS e background-image.

Un campo JS itera su ogni campo, ne confronta il valore e imposta una class CSS per esso, se necessario. Fin qui tutto bene.

Ora, inoltre, voglio che non solo ogni campo modificato sia contrassegnato con una stella, ma anche la scheda in cui si trova.

Poiché mi piace molto, vorrei memorizzare l’ID dell’elemento della scheda come attributo da qualche parte nel tag HTML di ogni campo (qualcosa come “parentTab”). La funzione JS evidenzia quindi il campo e il suo elemento “parentTab” (e forse anche quello “parentTab”).

Il mio primo approccio consiste nell’usare in modo errato l’attributo “title” o qualcosa in cui memorizzare parentTab in. Naturalmente, è sporco. Tuttavia, se aggiungo selvaggiamente attributi arbitrari al tag DIV o INPUT, non verrà più convalidato e mi sento meno sicuro dell’accesso a questi attributi: chissà come i diversi browser lo gestiranno e lo gestiremo in futuro?

Quindi la mia domanda è: Esiste un modo valido, conforms agli standard – un attributo di qualche tipo – per archiviare dati arbitrari all’interno di tag HTML, per un’ulteriore elaborazione da parte di JavaScript?

Ovviamente, potrei creare un array JS “parentTabs” e farcela. Ma memorizzarlo nell’input stesso sarebbe molto più elegante.

Puoi scoprire a quale elemento a tabs appartiene un campo scrivendo una funzione isChildOf, come questa: http://jimkeller.blogspot.com/2008/07/jquery-ischildof-is-element-child-of.html

Usare il DOM per risolvere questo problema sarà sempre più “elegante” rispetto alla duplicazione dei dati in alcuni formati personalizzati.

con l’introduzione di html5, puoi utilizzare gli attributi che iniziano con i data- , che verranno comunque convalidati.

  

L’attributo rel è spesso un’ottima scelta valida per l’archiviazione di dati come questo.

In jQuery hai l’API dati per la questione. http://docs.jquery.com/Internals/jQuery.data

Se non si utilizza jQuery, è ansible aggiungere i propri tag e memorizzare qualsiasi cosa al suo interno. tutti ti diranno che questo non è bello, ecc., ma tutte le grandi aziende del web lo stanno facendo. così finirai in una grande compagnia 😉

Mi piace come ha fatto John Resig : un tag script di tipo arbitrario. Il suo esempio riguarda i modelli, ma potresti davvero usarlo per qualsiasi cosa.