Ist es normal, zwei Elemente mit gleicher ID in zwei div-Elementen mit anderer ID zu haben: Aktualisiertes

StackOverflow https://stackoverflow.com/questions/3093121

Frage

ich weiß, dass zwei Elemente können nicht die gleiche ID hav. Aber es geschieht so, dass ich in meinem Projekt habe zwei Elemente mit gleicher ID in anderen divs, wie diese

<div id="div1">
     <img id="loading" />
</div>
<div id="div2">
     <img id="loading" />
</div>

und CSS:

#div1 #loading
{
    some style here...
}
#div2 #loading
{
    another style here...
}

funktioniert gut für mich, aber vielleicht ist es nicht so tun reccomended?

Danke

UPDATE

Ja, ich weiß, Thet i Klassen verwenden können, und es ist stark durch, dies zu tun empfohlen, aber ich möchte wissen, ist es eine potenzielle Gefahr in dieser Verwendung von id? Ich glaube nicht, becouse, wenn ich schreibe zum Beispiel

$("#div1 #loading")... wird es ein einzigartiges Element. nicht wahr?

Endgültigen aktualisieren

Verwenden vorgeschlagen principe, wenn Sie Gründe haben, das zu tun! ;)

War es hilfreich?

Lösung 10

https: // www .w3.org / TR / 1999 / REC-html401-19991224 / Struktur / global.html # ADEF-ID

Wenn Sie es in Ihrem Projekt benötigen, können Sie es verwenden, wie vorgeschlagen in meinem Frage Abschluss aktualisieren

Andere Tipps

Ändern Sie Ihre ID-Klasse. Es ist keine gute Idee, doppelten ID zu geben.

Denken Sie zwei Schüler in einer Klasse gleiche Rolle nicht haben. Stellen Sie sich vor, sie bekommen Prüfungsergebnis. Wie wird die Schule die marksheet erkennen können?

Ihr Weg ist nicht Cross-Browser-kompatibel und wird eine Menge beeinflussen, während JavaScript Codierung und Gesendete Form etc

Sie können den gleichen Effekt mit Klasse bekommen

sehen

<div id="div1">
     <img class="loading" />
</div>
<div id="div2">
     <img class="loading" />
</div>

und CSS:

#div1 .loading
{
    some style here...
}
#div2 .loading
{
    another style here...
}

eine ID muss (sollte) einzigartig !!

werden Sie Schwierigkeiten haben es über JS Auswahl in den meisten Browsern - eine bessere Nutzung der Klasse

Der große Grund ist für JavaScript DOM-Manipulation. In Ihrem Fall, wenn Sie etwas tun ...

document.getElementById("loading")

... JavaScript wird das erste Element zurück, und das erste einzige Element. Sie werden keine Möglichkeit haben, den Rest von ihnen ohne einig ernsthaften DOM zu Fuß zugreifen zu können.

Nur weil sonst niemand hat es geschrieben - der HTML-Spezifikation, Abschnitt über die ID , die sagt:

  

id = name [CS]

     

Dieses Attribut zuordnet   ein Name eines Elements. Dieser Name muss   einzigartig in einem Dokument.

Ja du hast recht, ist es nicht so tun recommened. Eine ID sollte immer eindeutig sein (zum Beispiel, wenn Sie das Element mit Javascript auswählen möchten). Wenn Sie nur den gleichen Stil zu den divs hinzufügen möchten, nur CSS-Klasse verwenden.

Einzigartige :

  

In der Mathematik und Logik, die Phrase „dort ist und nur ein“ verwendet wird, dass genau ein Objekt, um anzuzeigen, mit einer bestimmten Eigenschaft vorhanden ist.

#div1 #loading beheben nicht die Tatsache, dass Sie zwei Instanzen von #loading haben in Ihr Dokument . Also, nein, das nicht.

IDs sollte eindeutig sein, so ID1 und ID2 ist in Ordnung, aber für viele Elemente mit dem gleichen Stil, verwenden Sie eine HTML-Klasse und CSS-Klassenauswahl:

.loading
{
styles here
}

Diese dürfen beliebig oft wiederholt werden, wie Sie auf einer Seite angezeigt werden sollen:)

Ist es normal? Nr.

Ist es zu empfehlen? Definitiv nicht! Es ist eigentlich verboten (aber die Durchsetzung ist schwach).

Aber es (scheinbar) Werke, so ...

Id werden verwendet, um Elemente zu unterscheiden, müssen sie für verschiedene Grund eindeutig sein, eine davon ist die Verwendung von Javascript, Funktion wie getElementById wird nicht gut funktionieren, wenn Sie doppelte ID haben, werden Sie nicht in der Lage sein, vorherzusagen, was es wird auf anderen Browser tun, wie JS verschieden bei jedem Browser selbst implementiert ist.

Wenn Sie eine Struktur wie #div Laden und # div2 Laden nutzen wollen scheint es klar, dass beide Lade ähnliche Anwendungen haben, so sollten sie Klassen und würde wie diese

verwendet werden

# div1.loading und # div2.loading

Auch ein Plus dieser Syntax wäre es, den gemeinsamen Stil zu setzen, wie dies in .loading

.loading {style gemeinsam sowohl die Lade}

# div1.loading {Stil verwendet nur durch den Laden in div1}

# div2.loading {Stil verwendet nur durch den Laden in div2}

Validierung und puristisch-ism beiseite lässt, ist es vollkommen funktionsfähig. Aber ich würde auf jeden Fall ärgern, wenn ich das #loading ID verwenden und feststellen, dass ein Jquery-Effekt oder ein CSS-Effekt gilt für mehr als 1 element.Do mir sagen, ob Internet Explorer 6 oder 7 oder Firefox 1.x oder 2.x Ruinen, dass Code.

Es ist eine schlechte Praxis ich verwenden würde auf Element. Weil ich hatte etwas für das Verständnis einzigartig mit ihrem Namen Identifizierung geben. Und zweitens, was wir sein in CSS verwenden, aber in JavaScript dieser schlechten Praxis. So gutes Beispiel für diese Klasse und Schüler.

So tut dies nicht.

Ich bin nicht einverstanden auf die Leute sagen, immer einen „einzigartigen“ zu verwenden, unterschiedliche ID jedes Mal bedeutet, dass Sie ein beschriften. Manchmal ist es akzeptabel, wie mein Fall, in dem ich einen Rechner mache.

Die Javascript, um die Mathe tun, und das Ergebnis in die div mit der id = Ausgabe von „total“. Ich brauche die gleichen genaue „total“ jedoch in zwei verschiedenen Orten zu sein. In diesem Fall, warum sollte ich zwei nicht anders divs verwenden, um mit der gleichen ID? Ich brauche die gleiche Anzahl in beiden Feldern. Mit jQuery, ich auftrete und Ausgang die Mathematik einmal und es füllt beide divs zugleich, das ist das, was ich will.

So lange, wie Sie die Risiken zu verstehen, wo, wenn Sie Informationen aus diesem 2 divs mit der gleichen ID ZIEHEN wurden, dann sage ich frei fühlen. Solange Sie sich selbst und Notwendigkeit 2 unterschiedliche Ergebnisse in der gleichen div ID verwechseln dont.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top