Je crée une page qui a une certaine interaction fournie par javascript. À titre d'exemple: des liens qui envoient une demande AJAX pour obtenir le contenu des articles, puis afficher ces données dans une div. Évidemment, dans cet exemple, j'ai besoin de chaque lien pour stocker un peu d'informations supplémentaires: l'id de l'article. La façon dont je l'ai géré au cas où était de mettre ces informations dans le lien href ceci:
<a class="article" href="#5">
J'utilise ensuite jQuery pour trouver les éléments a.article et attacher le gestionnaire d'événements approprié. (ne vous attardez pas trop sur la convivialité ou la sémantique ici, c'est juste un exemple)
Quoi qu'il en soit, cette méthode fonctionne, mais elle sent un peu et n'est pas extensible du tout (que se passe-t-il si la fonction de clic a plus d'un paramètre? Et si certains de ces paramètres sont facultatifs?)
La réponse immédiatement évidente a été d'utiliser des attributs sur l'élément. Je veux dire, c'est pour ça qu'ils sont, non? (En quelque sorte).
<a articleid="5" href="link/for/non-js-users.html">
Dans ma récente question, j'ai demandé si cette méthode était valide, et il s'avère qu'à défaut de définir ma propre DTD (je ne le fais pas), alors non, elle n'est pas valide ou fiable. Une réponse courante a été de mettre les données dans l' class
attribut (bien que cela ait pu être dû à mon exemple mal choisi), mais pour moi, cela sent encore plus. Oui, c'est techniquement valable, mais ce n'est pas une excellente solution.
Une autre méthode que j'avais utilisée dans le passé était de générer un JS et de l'insérer dans la page dans une <script>
balise, créant une structure qui s'associerait à l'objet.
var myData = {
link0 : {
articleId : 5,
target : '#showMessage'
// etc...
},
link1 : {
articleId : 13
}
};
<a href="..." id="link0">
Mais cela peut être vraiment pénible à entretenir et est généralement très désordonné.
Donc, pour passer à la question, comment stockez-vous des informations arbitraires pour les balises HTML ?