2009-04-22 7 views
6

J'ai généralement essayé de coller avec les attributs DOM-only lors de l'écriture de Javascript. Maintenant que je suis passé de Prototype à jQuery, je peux tirer un sérieux parti de l'ajout de mes propres attributs à divers éléments DOM, principalement dans le but de mettre en place une convention de codage très lisible pour gérer les requêtes AJAX.Attributs non (X) HTML ... quels inconvénients?

Comme un court exemple, cela signifie que je fais des choses comme

<div type="book" app_id="13"> 
    <a href="#" action="delete">delete</a> 
</div> 

Et puis je peux mettre en place un code pour trouver tous les <a> balises avec un attribut action, trouver un parent avec un type et app_id, puis faire des opérations CRUD ... tout sans que je doive écrire du code supplémentaire.

Y a-t-il des pièges (autres que ceux qui ne sont pas strictement des plaintes XHTML) que je devrais surveiller, et/ou de bonnes habitudes à imiter? Que diriez-vous d'une façon standard de configurer mon propre espace de noms d'attribut?

Répondre

6

Selon this question, l'utilisation d'espaces de noms XML dans XHTML 1.0 n'est pas valide. L'ajout de vos propres attributs au même espace de noms me semble pire, car ils sont certainement invalides, même en ce qui concerne XML.

Si je fais ceci, je voudrais obtenir mon kilométrage sur class et rel attributs. Par exemple:

<div class="book" id="book_13"> 
    <a href="http://example.com/url/to/delete/non/ajaxily" class="delete">delete</a> 
</div> 
+0

Malheureusement, si vous voulez utiliser ensuite les différentes classes pour fournir une rétroaction visuelle (par exemple , différents arrière-plans pour un livre extrait ou non-extrait), vous avez besoin d'un autre élément wrapper, ou devez suivre la route d'attribut personnalisé. –

+2

@Don - Non, vous ne le faites pas. Vous pouvez utiliser plusieurs classes sur n'importe quel élément, juste les séparer avec des espaces. Par exemple, le livre "check-out book-tomorrow" est parfaitement valide. –

+0

@Mark - Vous avez raison, mais la façon dont vous dites a besoin d'être analysée, ce qui n'est pas préférable. Je choisirais (et aurais choisi) le chemin de l'attribut personnalisé. – BYK

0

Je ne vois rien de mal à cette approche. En fait, j'en ai vu de nombreux exemples et j'ai, moi-même, utilisé cette approche sur de nombreuses applications et je n'ai rencontré aucun obstacle à part ce problème de validation. Je pense que vous êtes libre de partir =)

+0

Vous auriez certainement à chercher accidentellement en utilisant le nom d'un élément sur lequel un ou plusieurs navigateurs vont agir. La plupart des navigateurs acceptent certains attributs même s'ils ne sont pas forcément valables (en particulier IE). – Travis

0

Je ne vois rien de mal à ajouter des attributs invalides à moins que quelqu'un utilise un navigateur inconnu qui est super strict et échoue sur tout ce qui n'est pas un standard. Cela pourrait arriver, je suppose ... mais c'est douteux ...

Une bonne alternative, cependant, serait d'utiliser le jQuery Metadata Plugin pour stocker des paires clé-> valeur facilement accessibles à l'intérieur d'un attribut.

Questions connexes