Question

Est-ce une bonne pratique d'attacher un attribut non existant à un élément HTML afin de l'utiliser dans jquery.Par exemple

<input type="text" valrule="someregexstring" />

puis utilisez simplement jquery pour sélectionner tous les éléments qui contiennent un attribut appelé valrule et analyser la chaîne regex.

Est-ce un « interdit » en ce qui concerne les normes de programmation et les meilleures pratiques ?

Était-ce utile?

La solution

Vous devriez utiliser le préfixe data-<myAttribute>.Il est supporté par HTML5, les autres navigateurs l'ignoreront et vous pourrez y accéder facilement avec jQuery en utilisant le .data() méthode.

<input  id="myInput" type="text" data-MySuperMassiveAttribute="Awesome"/>

et vous pouvez récupérer ces informations comme ceci :

var howAmI = $('#myInput').data('MySuperMassiveAttribute');
alert(howAmI); // now everybody knows how awesome you are ;-)

Autres conseils

Utilisez HTML5 Data - Préfixe pour un nouvel attribut comme celui-ci:

<input type="text" data-valrule="someregexstring" />

Son HTML 5.

http://ejohn.org/blog/html-5-data-atributes/

Vous le pouvez certainement.Bien que HTML5 ait introduit ce qu'on appelle données- attributs, permettant de définir des attributs non standard sur les éléments de manière standard.

Vous préfixez simplement les noms d'attributs avec data-

<input type="text" data-valrule="someregexstring" />

Bien que cela soit introduit dans HTML5, vous pouvez toujours l'utiliser avec des documents pour HTML4.


En utilisant jQuery (1.4.3+), le données- les attributs sont accessibles avec .données() - ou via .attr().

Personnellement, je ne ferais pas ça.Certains navigateurs ignorent les attributs « inexistants » lors de l'analyse HTML, par conséquent ces attributs ne seront pas enregistrés dans le DOM de la page du navigateur.Lorsque les sélecteurs jQuery sont exécutés, ils peuvent ne pas trouver cet attribut.

Si vous êtes assuré de fonctionner dans des navigateurs compatibles HTML5, vous pouvez utiliser HTML5 data- préfixe pour vos attributs, par ex.

<input type="text" data-valrule="someregexstring" />

Cependant, cela peut ne pas fonctionner si vous utilisez des navigateurs plus anciens.Par exemple, il s'avère que près de la moitié de nos clients utilisent IE7 sans prévoir de mise à niveau (évoluant avec la vitesse du gouvernement).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top