Html dupliziert "id"

7

Mein Steuerelement wird dynamisch entsprechend der Benutzereingabe erstellt, es gibt n -Toxboxen, deren IDs ebenfalls dynamisch sind.

Ich habe jedoch nicht vorausgesehen, dass dieser HTML-Code an anderer Stelle innerhalb derselben HTML-Seite wiederverwendet werden würde.

Das Problem, vor dem ich jetzt stehe, sind die doppelten IDs, die dazu führen, dass meine jQuery-Funktionen nicht gut funktionieren.

Ich verstehe, dass IDs eindeutig sein sollten, aber kann ich das Problem vermeiden, indem ich das äußerste <div> mit verschiedenen IDs verwende?

Irgendwelche Experten da draußen können mir einen guten Rat geben?

P.S. Ich suche nach einer effektiven Lösung, denn wenn ich die ID für jedes Element ändern müsste, würde es viel Arbeit in meinem jQuery erfordern.

Bitte helfen Sie. Vielen Dank!

%Vor%

Ich frage mich, ob ich in den jQuery-Funktionen etwas wie .. #container1 > #textbox1 in der Auswahl machen kann?

    
pekcheng 27.02.2014, 05:04
quelle

7 Antworten

14

Sie sollten absolut keine doppelten IDs haben . Es kann funktionieren *, aber es ist semantisch inkorrekt und Sie sollten es nicht tun

Sie sollten Ihre jQuery restrukturieren, egal wie viel stinkt. Die beste Option wäre die Verwendung einer Klasse, die möglicherweise die spezifische ID des übergeordneten Elements verwendet, um anzugeben, welche Sie möchten

Ein anderer, weniger attraktiver, aber praktikabler Weg wäre, eine Nummer oder etwas am Ende der ID hinzuzufügen, um sie eindeutig zu machen, und dann jQuery zu verwenden, um Elemente mit einem bestimmten Teil einer ID zu erkennen

* - Wie Arun beschreibt, akzeptiert jQuery den Selektor, ist aber NICHT günstig, weil es inkorrekt ist

    
Zach Saucier 27.02.2014, 05:06
quelle
6
  

Ich verstehe, dass "Id" mit dem Ouest eindeutig sein sollte   mit verschiedenen "id", kann es helfen, das Problem zu lösen?

Nein. Nicht eindeutige Element-IDs funktionieren nicht. In jedem Fall nicht einheitlich (verschiedene Browser und Frameworks können diesen Fall anders behandeln).

  

Irgendwelche Experten da draußen können mir einige gute Ratschläge geben?

Verwenden Sie class lieber mit id , insbesondere für jede Komponente, die mehrfach auf einer Seite wiederverwendet werden kann.

Setzen Sie anstelle der internen Komponentenelemente IDs für die übergeordneten Elemente selbst und überarbeiten Sie Ihre jQuery-Selektoren entsprechend. Alternativ können Sie Ihre Komponente so implementieren, dass sie bei ihrer Verwendung einen 'Namespace'-Parameter / -Attribut verwendet und jedem Klassennamen den Namespace innerhalb Ihrer Komponente voranstellt (dieser Ansatz funktioniert besonders gut beim Erstellen benutzerdefinierter JSP-Tags).

    
aroth 27.02.2014 05:10
quelle
3

Auch wenn es falsch ist gibt es nichts falsches mit dem Selektor in jQuery

%Vor%

Demo: Geige

Eine bessere Wahl ist die Verwendung des Attributselektors

%Vor%

Demo: Geige

    
Arun P Johny 27.02.2014 05:08
quelle
2

Ich würde vorschlagen, dass Sie class anstelle von id verwenden. Doppelte id s sind keine gute Übung.

    
Rahul Desai 27.02.2014 05:06
quelle
2

Ich werde vorschlagen, Klasse statt ID zu verwenden. Oder fügen Sie Postfix hinzu, während dynamische IDs generiert werden.

    
Amit 27.02.2014 05:08
quelle
1

Sie können nicht mehrmals das gleiche id haben. Verwenden Sie stattdessen class .

    
v42 27.02.2014 05:07
quelle
0

Hängt von der HTML-Version ab:

  1. HTML 4 ID muss dokumentenweit eindeutig sein.
  2. HTML 5 ID ist im Containerbaum eindeutig.

aber wir schlagen vor, sind nicht gute Praxis

    
Sunil shakya 17.10.2017 18:54
quelle

Tags und Links