Muss die ID auf der gesamten Seite eindeutig sein?

69

Ich verwende jQuery und frage mich nur, ob die ID auf der gesamten Seite immer eindeutig sein muss. Ich weiß, der Unterricht kann so oft wiederholt werden, wie Sie möchten. Was ist mit dem Ausweis?

guten Abend
quelle
2
Ein ID-Attribut wird im Allgemeinen nur einmal verwendet, da eine ID eindeutig ist
Ryan
2
Sie können die Definition einer ID nicht überschreiben, wenn Sie dies für möglich halten.
Narayana Nagireddi
8
Warum stimmen alle diese Frage ab? Ich kann sehen, dass es einfach ist, aber das ist kein Grund, abzustimmen. Sie sollten einfach
weitermachen
1
@nodrog Leute kennen die Bedeutung von Downvote hier nicht .... I Upvotd.
Royi Namir

Antworten:

61

Ja, es muss einzigartig sein.

HTML4:

https://www.w3.org/TR/html4/struct/global.html#h-7.5.2

Abschnitt 7.5.2:

id = name [CS] Dieses Attribut weist einem Element einen Namen zu. Dieser Name muss in einem Dokument eindeutig sein.

HTML5:

https://www.w3.org/TR/html5/dom.html#element-attrdef-global-id

Das id-Attribut gibt die eindeutige ID (ID) des Elements an. Der Wert muss unter allen IDs im Home-Teilbaum des Elements eindeutig sein und mindestens ein Zeichen enthalten. Der Wert darf keine Leerzeichen enthalten.

Fataler Fehler
quelle
7

Muss eine ID auf der gesamten Seite eindeutig sein ?

Nein.

Denn im HTML-Lebensstandard vom 6. Dezember 2019 heißt es eindeutig:

Das class, idund slotAttribute können auf alle HTML - Elemente angegeben werden. ……. Wenn auf HTML - Elementen angegeben, das idmuss Attributwert sein unter allen IDs einzigartig in der Element - Baum und mindestens ein Zeichen enthalten muss.

und eine Seite kann mehrere haben DOM-Bäume haben . Dies ist beispielsweise der Fall, wenn Sieeinem ElementElement.attachShadow()einen Schatten-DOM-Baum hinzugefügt () haben.

Ein Dokumentbaum und seine zugrunde liegenden Schattenbäume


TL; DR

Muss eine ID auf der gesamten Seite eindeutig sein ?

Nein.

Muss eine ID in einem DOM-Baum eindeutig sein ?

Ja.

Константин Ван
quelle
4

Jan 2018, hier ist Youtube HTML, Sie können sehen, dass id = "button" id = "info" dupliziert sind.

Geben Sie hier die Bildbeschreibung ein

vanduc1102
quelle
4

Technisch gesehen muss die ID nach HTML5-Standards auf der Seite eindeutig sein - https://developer.mozilla.org/en/DOM/element.id

Aber ich habe an extrem modularen Websites gearbeitet, bei denen dies völlig ignoriert wird und funktioniert. Und es macht Sinn - der überraschendste Teil.

Wir nennen es "Komponentisierung"

Beispielsweise könnte Ihre Seite eine Komponente enthalten, bei der es sich um eine Art Widget handelt. Es enthält Inhalte mit eigenen eindeutigen IDs, z. B. "OK-Button".

Sobald sich viele dieser Widgets auf der Seite befinden, haben Sie technisch ungültiges HTML. Aber es macht Sinn componentize Ihre Widgets , so dass sie jeweils intern ihre eigenen OK - Taste , zB Referenz , wenn Jquery verwenden suchen von ihm eigene Wurzel ist es sein könnte:$widgetRoot.find("#ok-button")

Dies funktioniert für uns, obwohl technisch gesehen IDs überhaupt nicht verwendet werden sollten, sobald sie nicht eindeutig sind.

Wie oben erwähnt, macht es sogar YouTube, also ist es nicht so abtrünnig.

PandaWood
quelle
3

Früher waren Browser diesbezüglich nachsichtig (vor vielen Jahren, als CSS noch jung war) und erlaubten, dass die ID mehr als einmal verwendet wurde. Sie sind strenger geworden.

Ja-IDs dürfen jedoch eindeutig sein und nur einmal verwendet werden.

Wenn Sie die CSS-Formatierung mehrmals verwenden müssen, verwenden Sie CLASS.

cjtech
quelle
2

Das ist im Grunde der springende Punkt eines Ausweises. :) IDs sind spezifisch und können nur einmal pro Seite verwendet werden. Klassen können nach Belieben genutzt werden.

Bram Vanroy
quelle
1

IDs müssen immer eindeutig sein.

Jeder hat eine eindeutige Identifikationsnummer (z. B. Sozialversicherungsnummer), und es gibt viele Personen in einer sozialen Klasse


quelle
1

Mit Javascript können Sie nur mit ID auf ein Element verweisen. document.getElementByIdund der $Selektor von jQuery gibt nur das erste übereinstimmende Element zurück. Es ist also nicht sinnvoll, dieselbe ID für mehrere Elemente zu verwenden.

Keune
quelle
0

Ja, IDs sind eindeutig. Klasse sind nicht.

Michele Spagnuolo
quelle
0

Es gibt gute Antworten auf dieselbe Frage unter /software/127178/two-html-elements-with-same-id-attribute-how-bad-is-it-really .

Ein Leckerbissen, das oben nicht erwähnt wurde, ist, dass, wenn es mehrere identische ids gibt, dieselbe Seite (was passiert, obwohl es gegen den Standard verstößt):

Wenn Sie dies umgehen müssen (das ist traurig), können Sie $("*#foo")jQuery davon überzeugen, getElementsByTagNameeine Liste aller übereinstimmenden Elemente zu verwenden und zurückzugeben.

serv-inc
quelle