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?
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.
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.
TL; DR
Muss eine ID auf der gesamten Seite eindeutig sein ?
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.
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.
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.
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.
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.
Antworten:
Ja, es muss einzigartig sein.
HTML4:
https://www.w3.org/TR/html4/struct/global.html#h-7.5.2
Abschnitt 7.5.2:
HTML5:
https://www.w3.org/TR/html5/dom.html#element-attrdef-global-id
quelle
von mdn https://developer.mozilla.org/en/DOM/element.id
also denke ich es ist besser ...
quelle
Nein.
Denn im HTML-Lebensstandard vom 6. Dezember 2019 heißt es eindeutig:
und eine Seite kann mehrere haben DOM-Bäume haben . Dies ist beispielsweise der Fall, wenn Sieeinem Element
Element.attachShadow()
einen Schatten-DOM-Baum hinzugefügt () haben.TL; DR
Nein.
Ja.
quelle
Jan 2018, hier ist Youtube HTML, Sie können sehen, dass id = "button" id = "info" dupliziert sind.
quelle
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.
quelle
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.
quelle
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.
quelle
IDs müssen immer eindeutig sein.
Jeder hat eine eindeutige Identifikationsnummer (z. B. Sozialversicherungsnummer), und es gibt viele Personen in einer sozialen Klasse
quelle
Mit Javascript können Sie nur mit ID auf ein Element verweisen.
document.getElementById
und 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.quelle
Ja, IDs sind eindeutig. Klasse sind nicht.
quelle
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
id
s gibt, dieselbe Seite (was passiert, obwohl es gegen den Standard verstößt):quelle