Domanda

Una domanda molto generale.

Sto generando dinamicamente un modulo che è diviso in più livelli di schede usando HTML / JavaScript.

Voglio evidenziare alcuni dei campi (quelli che hanno un valore diverso da un modello globale) con un simbolo a stella * usando CSS e immagine di sfondo.

Un campo JS scorre attraverso ogni campo, confronta il suo valore e imposta una classe CSS per esso, se necessario. Fin qui tutto bene.

Ora, inoltre, desidero non solo che ogni campo modificato sia contrassegnato da una stella, ma anche dalla scheda in cui si trova.

Dato che lo amo in modo semplice, vorrei archiviare l'ID elemento della scheda come attributo da qualche parte nel tag HTML di ciascun campo (qualcosa come " parentTab "). La funzione JS quindi evidenzia il campo e il suo "parentTab" elemento (e forse anche quello di "parentTab").

Il mio primo approccio è l'uso improprio del "titolo" o qualcosa in cui archiviare parentTab. Naturalmente, è sporco. Tuttavia, se aggiungo selvaggiamente attributi arbitrari al tag DIV o INPUT, questo non si convaliderà più e non mi sento sicuro di accedere a questi attributi - chissà come diversi browser lo gestiscono e lo gestiranno in futuro?

Quindi la mia domanda è: esiste un modo valido e conforme agli standard - un attributo di qualche tipo - per archiviare dati arbitrari all'interno di tag HTML, per un'ulteriore elaborazione tramite JavaScript?

Certo, potrei creare un " parentTabs " Array JS ed eseguilo. Ma memorizzarlo nell'input stesso sarebbe molto più elegante.

È stato utile?

Soluzione

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

L'uso del DOM per risolverlo sarà sempre più "elegante" di duplicare i dati in un formato personalizzato.

Altri suggerimenti

con l'introduzione di html5, puoi utilizzare gli attributi che iniziano con dati - e verranno comunque convalidati.

<input type="text" name="username" data-parentTab="tab1" value="non-default">

L'attributo rel è spesso un'ottima scelta valida per archiviare dati come questo.

In jQuery hai l'API dei dati per l'argomento. http://docs.jquery.com/Internals/jQuery.data

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

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top