Es gibt einige Fragen zu Stack Overflow über id
vs class
aber diese Fragen sind fast immer in Bezug auf CSS - und die allgemein akzeptierte Antwort ist die Verwendung von Klassen, um eine bestimmte Reihe von Elementen und IDs für bestimmte Instanzen zu stylen. Macht Sinn, fair genug.Ist es jemals akzeptabel, mehrere IDs in einer HTML-Seite zu haben?
Ich finde jedoch, dass, wie ich mehr und mehr Javascript/jQuery/Ajax, dieser Ansatz wird immer weniger klar geschnitten und ich finde Situationen, wo semantische Elemente IDs gegeben werden sollte, aber weil es sein könnte mehrere Instanzen Ich sollte Klassen verwenden.
Hier ist ein Beispiel dafür, was ich meine:
Werfen Sie einen Blick auf die Symbolleiste auf Stack-Überlauf des Abschlags Frage Editor - jede Taste hat eine ID es eindeutig zu identifizieren. Macht Sinn - es ist ein Knopf, der eine bestimmte Funktion ausführt und es ist wahrscheinlich ein Skript angehängt, das auf dieser ID basiert.
Jetzt stellen Sie sich vor, dass ich eine Rich-Web-App erstelle und es gibt eine Seite, die zwei Registerkarten mit jeweils einem Markdown-Editor hat. Bedeutet dies, dass die Symbolleistenschaltflächen nun Klassen bis identifizieren sollten? sie?
Das scheint einfach falsch.
Ein anderes Beispiel: Ich arbeite an einer Fotogalerie-Website, die auf jedem Foto eine kleine Symbolleiste überlagert hat. Die Konvention besagt, dass ich mehrere Klassen verwenden sollte, da es mehrere Instanzen dieser Schaltflächen gibt. "Ja wirklich?"
Also meine Fragen sind ....
- Wenn ich das Verbrechen der doppelten IDs auf einer Seite zu begehen, welchen Browser tatsächlich brechen?
- Bei Browsern, bei denen dies nicht funktioniert, wird nur das CSS-Design unterbrochen oder jQuery-Selektoren werden ebenfalls unterbrochen.
- Ist es wirklich so schlimm, doppelte IDs in Fällen wie den beschriebenen zu verwenden.
Ehrfürchtige Frage. Ich hatte eine etwas schlechtere Formulierung eingegeben, und Sie haben den Nagel auf den Kopf getroffen. Ich bin froh, dass ich es gefunden habe, bevor ich es eingereicht habe. –