2009-01-09 6 views
40

Darf ich Attribute, die ich möchte, HTML-Tags hinzufügen, so dass ich später ihren Wert mit Javascript abrufen kann? Beispiel:Kann ich nur Attribute für meine HTML-Tags erstellen?

<a href="something.html" hastooltip="yes" tipcolour="yellow">...</a> 

Wenn das nicht funktioniert, wie würden Sie beliebige Informationen wie diese speichern?

Edit: Da es das HTML bilden erscheint Attribute ist technisch nicht gültig ist, habe ich den zweiten Teil dieser Frage in seine eigene Frage hier neu formuliert: How to store arbitrary data for some HTML tags

+1

+1 Ich bin ein großer Fan der Verwendung von Datenattributen für deklaratives Verdrahtungsverhalten, anstatt Klassen zu verwenden. Wie auch immer, ich würde versuchen, eine Klasse zu verwenden, wenn ich CSS richtig schreiben könnte. Mit anderen Worten, Attribute für Verhalten, Klassen für Stil. – AaronLS

Antwort

43

In HTML5 ja. Sie müssen ihnen nur data- voranstellen. Siehe the spec.

Natürlich bedeutet dies, dass Sie den HTML5-Doctype (<!doctype html>) verwenden sollten, obwohl Browser egal sind.

+1

HTML5 ist immer noch im Entwurf, dies ist keine sichere Empfehlung – annakata

+6

Umm, diese Spezifikation soll vor dem endgültigen gehen verwendet werden. http://wiki.whatwg.org/wiki/FAQ#When_will_we_be_able_to_start_using_these_new_features.3F – nes1983

+17

Dies wird nichts mehr kaputt machen, als willkürlich Attribute auszuwählen, und es ist gültig für eine zukünftige Spezifikation, lächelt rundum! –

4

Sie können. Die Seite wird die Überprüfung nicht bestehen, die meisten Browser akzeptieren sie jedoch.

Es ist fast sicher der falsche Weg es zu tun. Versuchen Sie es mit class = "hasTooltip_yes tipcolour_yellow"

+0

Sie denken nicht, dass Bastarding der Klasse Attribut ist noch mehr falsch, obwohl? – nickf

+1

Wenn Sie das Klassenattribut bastardisieren, wird es immer noch validieren, so dass Sie in Bezug auf die Einhaltung Ihrer Standards noch besser dran sind. –

+17

Nur weil Sie sich an Standards halten, heißt das nicht, dass Sie die bestmögliche Lösung haben. – Kibbee

2

Abhängig von den Informationen, die Sie speichern möchten, sollten Sie sich einige der anderen verfügbaren Attribute ansehen. Diese sehen nicht wie gute Kandidaten aus, aber "rel" wurde für viele interessante Dinge verwendet.

+0

entsprechend der Spezifikation kann das Rel-Attribut nur LinkTypes enthalten, zB: start next prev Kapitel – nickf

+1

Aber die Spezifikation definiert keine autoritative Liste von Verbindungstypen und lässt tatsächlich Raum für die Erweiterung – Gareth

24

Nun, Sie können immer Ihre eigene DTD erstellen, um neue gültige Attribute für Ihre Tags zu erhalten. Browser wird nicht schwanken, Sie sollten Ihr JavaScript testen, wenn Sie auf diese benutzerdefinierten Attribute zugreifen können. Oder Sie können die vorhandenen Funktionen von HTML und CSS verwenden. Sie kann ich Ihnen hartcodierte Farbnamen in Ihrem HTML zu stark entmutigen mehrere Klassen wie

<a href="..." class="class-one class-two has-tooltip"> 

Für die Farbauswahl verwenden zu verwenden, haben Sie CSS für Arten erklärt. Verwenden Sie das Klassenattribut als Haken für die CSS-Deklaration und wählen semantische Klassennamen, zum Beispiel

HTML:

<a href="..." class="has-tooltip common-tooltip"> 
<a href="..." class="has-tooltip long-tooltip"> 

CSS:

a.has-tooltip { 
    colour: red; 
} 
a.common-tooltip { 
    background: #ddd; 
} 
a.long-tooltip { 
    background: #ebf; 
} 

Und in Ihrem JavaScript-Code, den Sie kann Elemente mit Klassen wie "lang-tooltip" und "common-tooltip" anstelle von "yellow-tooltip" generieren, sodass Sie sich im Falle eines Redesigns der Seite mit grünen Tooltips nicht widersprechen.

+2

das Beispiel, das ich gab, war wirklich nur Ein Beispiel: Die Daten, die ich speichern würde, könnten wirklich alles sein, nicht nur Farben und was nicht. – nickf

+0

okay, ich antwortete nur defensiv :-) – bandi

Verwandte Themen