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?
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
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).
Ich würde vorschlagen, dass Sie class
anstelle von id
verwenden. Doppelte id
s sind keine gute Übung.
Tags und Links javascript html jquery