2009-04-22 7 views
6

Ich habe generell versucht, beim Schreiben von Javascript nur mit DOM-Attributen zu bleiben. Jetzt, wo ich von Prototype zu jQuery gewechselt habe, kann ich einige eigene DOM-Elemente mit eigenen Attributen versehen, vor allem weil ich eine sehr lesbare Codierungskonvention für die Verarbeitung von AJAX-Anfragen einrichten kann.Nicht- (X) HTML-Attribute ... irgendwelche Nachteile?

Als kurzes Beispiel bedeutet dies, ich Dinge tun, wie

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

Und dann kann ich Code einrichten alle <a>-Tags mit einem action Attribut zu finden, die ein Elternteil mit einem type und app_id finden und dann mache CRUD-Operationen ... alles ohne dass ich zusätzlichen Code schreiben muss.

Gibt es irgendwelche Fallstricke (abgesehen davon, dass sie nicht streng XHTML-Beschwerden sind), auf die ich achten sollte, und/oder irgendwelche guten Gewohnheiten, die ich nachahmen sollte? Wie wäre es mit einer Standardmethode zum Einrichten eines eigenen Attributnamespaces?

Antwort

6

Gemäß this question ist die Verwendung von XML-Namespaces in XHTML 1.0 ungültig. Das Hinzufügen eigener Attribute zum selben Namensraum scheint mir schlimmer zu sein, da sie höchstwahrscheinlich ungültig sind, sogar was XML betrifft.

Würde ich dies tun, würde ich meine Laufleistung aus class und rel Attribute erhalten. Zum Beispiel:

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

Leider, wenn Sie möchten, dann verschiedene Klassen verwenden visuelles Feedback zu geben (sagen , verschiedene Hintergründe für ein ausgechecktes oder nicht ausgechecktes Buch), Sie benötigen entweder ein anderes Wrapper-Element oder müssen mit der benutzerdefinierten Attribut-Route gehen. –

+2

@Don - Nein, du nicht. Sie können mehrere Klassen für jedes Element verwenden, trennen Sie sie einfach durch Leerzeichen. "check-out book due-tomorrow" zum Beispiel ist perfekt gültig –

+0

@Mark - Sie haben Recht, aber die Art, wie Sie sagen, Parsing benötigt, was nicht vorzuziehen ist. Ich würde den benutzerdefinierten Attributpfad auswählen (und tatsächlich gewählt haben). – BYK

0

Ich sehe nichts falsch mit diesem Ansatz. Tatsächlich habe ich viele Beispiele dafür gesehen, und ich selbst habe diesen Ansatz bei vielen Anwendungen verwendet und bin mit keinen Hindernissen außer dem Validierungsproblem konfrontiert worden. Also ich denke, du bist frei zu gehen =)

+0

Sie müssten unbedingt nach einem Namen eines Elements suchen, auf das ein oder mehrere Browser reagieren. Die meisten Browser akzeptieren bestimmte Attribute, auch wenn sie nicht unbedingt gültig sind (insbesondere IE). – Travis

0

Ich sehe nichts falsch mit dem Hinzufügen von ungültigen Attributen, es sei denn, jemand verwendet einen unbekannten Browser, der sehr streng ist und fehlschlägt auf etwas, das kein Standard ist. Das könnte passieren, nehme ich an ... aber es ist zweifelhaft ...

Eine gute Alternative wäre jedoch, die jQuery Metadata Plugin zu verwenden, um leicht zugängliche Schlüssel-> Wertepaare innerhalb eines Attributs zu speichern.

Verwandte Themen