2009-08-26 4 views
6

Eh bien, j'admets: J'ai largement utilisé jQuery.attr pour stocker des données personnalisées dans les éléments DOM dans beaucoup, beaucoup de scripts. Je me demande si convertir tout mon script pour utiliser jQuery.data au lieu de jQuery.attr. Pour autant que je comprends, les avantages de jQuery.data sont:Utilisation de jQuery.data

  • produire du code HTML propre et valide
  • peut stocker tout type de données (objets, tableau, ...) sur les éléments

l'avantage principal des attributs personnalisés sont:

  • Si les pages WEB ne sont pas strictes HTML, je peux produire du code HTML avec des attributs personnalisés sur le serveur
  • Dans Firebug, il est facile d'inspecter mon code HTML à la recherche de mes attributs personnalisés

Quelqu'un peut-il me dire si je manque quelque chose ou s'il existe des problèmes qui utilise jQuery.data hautement préférable?

Répondre

5

Vous l'avez à peu près compris. Mais connaissez-vous chaque attribut HTML? De nombreux attributs sont utilisés par les lecteurs d'écran et autres outils d'utilisation qui ne sont pas (encore) standard. Que se passe-t-il lorsque vous utilisez accidentellement l'attribut role et qu'un lecteur d'écran le récupère? Utiliser $.data n'est pas seulement plus propre, c'est plus sûr pour vous et cela a plus de sens.

EDIT: J'ai appris quelque chose la nuit dernière qui est pertinent à cette question. En HTML5, vous pouvez spécifier des attributs personnalisés pour stocker des données. Ces attributs personnalisés doivent être spécifiés en utilisant le préfixe "data-". Voir the spec pour des informations plus détaillées. Cela signifie que vous n'avez pas besoin de revenir en arrière et de changer tout votre ancien code, car vous n'aurez plus à craindre de chevauchement avec d'autres attributs si vous préfixez "data-". Toutefois, si vous devez stocker des types de données plus complexes que les chaînes, utilisez $.data.

1

Je pense que vous ne manquez rien mais stocker des données sur les attributs de dom est toujours une mauvaise pratique, donc je pense que vous devriez utiliser la fonction $ .data.

+0

Attention à élaborer? Pour moi aussi, ça ne me semble pas juste de le faire, mais je ne sais pas pourquoi. –