HTML5: Erlaubte Werte für ID- und Klassenattribute
Ab HTML5 sind die einzigen Einschränkungen für den Wert einer ID:
- muss im Dokument eindeutig sein
- darf keine Leerzeichen enthalten
- muss mindestens ein Zeichen enthalten
Für Klassen gelten ähnliche Regeln (abgesehen von der Einzigartigkeit natürlich).
Der Wert kann also aus allen Ziffern, nur aus einer Ziffer, nur aus Satzzeichen, aus Sonderzeichen oder aus anderen Zeichen bestehen. Nur keine Leerzeichen. Das ist ein großer Unterschied zu HTML4.
In HTML 4 müssen ID-Werte mit einem Buchstaben beginnen, auf den nur Buchstaben, Ziffern, Bindestriche, Unterstriche, Doppelpunkte und Punkte folgen dürfen.
In HTML5 sind diese gültig:
<div id="999"> ... </div>
<div id="#%LV-||"> ... </div>
<div id="____V"> ... </div>
<div id=""> ... </div>
<div id=""> ... </div>
<div id="{}"> ... </div>
<div id="©"> ... </div>
<div id="¤€~¥"> ... </div>
Denken Sie daran, dass die Verwendung von Zahlen, Satzzeichen oder Sonderzeichen im Wert einer ID in anderen Kontexten (z. B. CSS, JavaScript, Regex) zu Problemen führen kann.
Zum Beispiel ist die folgende ID in HTML5 gültig:
<div id="9lions"> ... </div>
In CSS ist sie jedoch ungültig:
Aus der CSS2.1-Spezifikation:
4.1.3 Zeichen und Gehäuse
In CSS, Kennungen (einschließlich Elementnamen, Klassen und IDs in Selektoren) können nur die Zeichen [a-zA-Z0-9] und ISO 10646 Zeichen U+00A0 und höher, sowie den Bindestrich (-) und den Unterstrich (_); sie dürfen nicht mit einer Ziffer, zwei Bindestrichen oder einem Bindestrich beginnen gefolgt von einer Ziffer .
In den meisten Fällen können Sie Zeichen in Kontexten, in denen sie Einschränkungen oder eine besondere Bedeutung haben, ausblenden.
W3C-Referenzen
HTML5
3.2.5.1 Die id
Attribut
El id
Attribut gibt den eindeutigen Bezeichner (ID) des Elements an.
Der Wert muss unter allen IDs im Home-Teilbaum des Elements eindeutig sein Teilbaum des Elements eindeutig sein und muss mindestens ein Zeichen enthalten. Der Wert darf keine keine Leerzeichen enthalten.
Hinweis: Es gibt keine weiteren Einschränkungen hinsichtlich der Form einer ID; insbesondere Insbesondere können IDs nur aus Ziffern bestehen, mit einer Ziffer beginnen, mit mit einem Unterstrich beginnen, nur aus Satzzeichen bestehen, usw.
3.2.5.7 Die class
Attribut
Das Attribut, sofern angegeben, muss einen Wert haben, der eine Reihe von durch Leerzeichen getrennten Token bestehen, die die verschiedenen Klassen repräsentieren, zu denen das Element zugehört.
Die Klassen, die einem HTML-Element zugewiesen sind, bestehen aus allen den Klassen, die zurückgegeben werden, wenn der Wert des Attributs class durch Leerzeichen. (Duplikate werden ignoriert.)
Es gibt keine zusätzlichen Einschränkungen für die Token, die Autoren in Attribut verwenden können, aber die Autoren werden ermutigt, Werte zu verwenden, die die die Natur des Inhalts beschreiben, anstatt Werte zu verwenden, die die gewünschte Darstellung des Inhalts beschreiben.
119 Stimmen
Dies unterscheidet sich zwischen HTML5 und früheren Versionen der Spezifikation. Ich habe es hier erklärt: mathiasbynens.be/notes/html5-id-class
5 Stimmen
Mir ist aufgefallen, dass SharePoint 2010 einen Wert wie diesen - {8CC7EF38-31D8-4786-8C20-7E6D56E49AE2}-{E60CE5E2-6E64-4350-A884-654B72DA5A53} für eine dynamisch generierte Tabelle innerhalb eines Webparts zuweist und eine Seite, die einen ID-Wert dieser Art enthält, in keinem der gängigen Browser bricht. Der Umgang mit solchen ID-Werten über JavaScript ist allerdings schwierig - mvark.blogspot.in/2012/07/
4 Stimmen
HTML4- und HTML5-Anforderungen für
ID
Werte sind sehr unterschiedlich. Hier ist eine schnelle und vollständige Übersicht über HTML5ID
Regeln: stackoverflow.com/a/31773673/35972766 Stimmen
Bitte beachten Sie: Wenn Sie so vorgehen, wie es in einigen Antworten steht, und einen Punkt verwenden (
**.**)
mit jQuery wird Sie in ziemliche Schwierigkeiten bringen, zum Beispiel, wenn Sie<input id="me.name" />
y luego$("#me.name").val()
wird jQuery veranlassen, nach einer<me>
Tag mit der Klasse.name
was niemand wirklich will!3 Stimmen
@SamSwift Nein, Sie müssen nur Sonderzeichen als Die Ärzte sagen . Bitte prüfen Sie dies Online-Demo .
0 Stimmen
Ich weiß, der OP ist über die Generierung von gültigen IDs fragen (und nicht, wie man jQuery ein vorhandenes DOM), aber, @Faust's Kommentar Weg unten wird sein also nützlich für andere, die vielleicht auf die gleiche Weise gegoogelt haben wie ich. Mit seiner Technik: Ich konnte erfolgreich nach Elementen wie diesem (mit einem Leerzeichen) suchen:
<div id="Usr_order #">...
mit einer jQuery-Anweisung wie dieser:$([id='Usr_order #'])
1 Stimmen
@mvark GUIDs sind heiß, aber ich habe herausgefunden, dass mit base64 kodierte GUIDs noch heißer sind.
0dea65ca-eac3-489a-944c-0c522b609f78
wird kompakt dargestellt alsymXqDcPqmkiUTAxSK2CfeA
.