Suchen Sie ein HTML-Element, mit dem die ID beginnt

87

Meine Frage lautet:

Ich habe HTML-Code auf mehreren Seiten, auf jeder habe ich ein JQgrid (JQuery Grid) verwendet, um einige Daten anzuzeigen. Ich wusste, dass auf jeder dieser Seiten das Element, das das JQgrid enthält, als "LIST_xxx" bezeichnet wird. Jetzt muss ich ein Javascript erstellen, das das Element "LIST_XXXX" auf jeder Seite verwendet und einige Dinge erledigt. Wie könnte ich nach einem Element anhand der ID suchen, aber nur den Anfangsteil (der ID, wie ich bereits erwähnt habe) kennen:

$('#list_[XXXX]')... --> The part surrounded by [] is variable on each page, i want to discriminate that.

Ich hoffe ich habe mich klar gemacht. Vielen Dank.

Lidermin
quelle

Antworten:

168

Versuchen

$('div[id^="list_"]')

Es sollte funktionieren

Glen Little
quelle
Viel besseres Layout für diese Referenz als die jquery-Dokumentation.
Yuriy Faktorovich
Das funktioniert gut, danke ... Ich habe es verwendet, um eine ID zu finden, die mit einem bestimmten Wert endet, wie if ($ ('div [id $ = "' + val + '"]'). Länge> 0) etwas ausführen;
Raphie
Nun, es funktioniert gut für die oben genannten einfachen IDs von Steuerelementen. So funktioniert es für Szenarien wie Steuerelemente mit den IDs "txt_0_city", "txt_1_city", "txt_2_city", "txt_3_city" usw. Ich möchte, dass alle Elemente mit IDs wie "txt _ * _ city" gezählt werden "
Rajiv Bhardwaj
@Rajiv Wenn Sie die Kontrolle über das HTML haben, ist es gut, jedem dieser Elemente eine Klasse wie "Stadt" hinzuzufügen. Sie können sie dann leicht zählen.
Glen Little
@Rajiv Wenn Sie das HTML nicht verbessern können, besuchen Sie api.jquery.com/multiple-attribute-selector - Sie können die Selektoren kombinieren. Zum Beispiel $ ("span [id ^ = 'txt _'] [id $ = '_ city']")
Glen Little
22

Sie müssen das Attribut verwenden, das mit dem Selektor beginnt , wie folgt:

$('[id^=list_]').whatever()
SLaks
quelle
Nun, es funktioniert gut für die oben genannten einfachen IDs von Steuerelementen. So funktioniert es für Szenarien wie Steuerelemente mit den IDs "txt_0_city", "txt_1_city", "txt_2_city", "txt_3_city" usw. Ich möchte die Anzahl aller Elemente mit IDs wie "txt _ * _ city" "
Rajiv Bhardwaj
Hallo @Rajiv, willkommen bei stackoverflow. Ich habe auf die andere Kopie Ihres Kommentars geantwortet.
Glen Little
8

Geben Sie diesem Element einen allgemeinen Klassennamen oder ein anderes Attribut, nach dem Sie abfragen können.

Yuriy Faktorovich
quelle
Hallo, danke für Ihre Antwort. Das Problem mit Ihrem Vorschlag ist, dass möglicherweise mehrere Tabellen JQgrid enthalten, also: "LIST_customer", "LIST_carrier" ... und so weiter. Und ich muss beide nur basierend auf dem anfänglichen ID-Teil auswählen: "LIST_".
Lidermin
1
Ich verstehe, aber sie alle zu einer List-Klasse zu machen, scheint mir ein lesbarerer und beschreibenderer Ansatz zu sein. Für jeden sein eigenes, Sie könnten immer die Starts mit Selektor in jquery verwenden, wie durch andere Antworten gezeigt.
Yuriy Faktorovich
@lidermin Was Yuriy sagt, sollte funktionieren. Warum fügen Sie Ihren Steuerelementen keine Klasse wie "Liste" hinzu, da Sie list_ als Präfix haben? Wenn Sie also diese Klasse auswählen, erhält sie jedes dieser Steuerelemente. Dies ist der effizienteste Weg, dies zu tun.
Josh Mein
Yuriys Antwort wird funktionieren. Sie können allen Ihren "LIST_XXXX" -Elementen dieselbe Klasse (z. B. "ListsINeedToFind") hinzufügen und sie dann mit nachschlagen $('.ListsINeedToFind').
Annabelle
Manchmal müssen mehrere Elemente mit derselben Klasse, aber unterschiedlichen IDs vorhanden sein.
Vincent
5

Verwenden Sie den Selektor "Attribut beginnt mit" http://api.jquery.com/attribute-starts-with-selector/

$("[id^=list_]")

Beachten Sie, dass dies ineffizient ist. Stellen Sie den Tag-Namen voran und steigen Sie nach Möglichkeit vom nächsten übergeordneten Element ab.

Chetan S.
quelle
1

Um ein Element zu erhalten, das mit einer bestimmten ID / einem bestimmten Zeichen endet

find('[id$=someid]')

Um ein Element zu erhalten, das mit einer bestimmten ID / einem bestimmten Zeichen beginnt

find('[id*=anotherid]')

Um ein Element zu erhalten, das mit einer bestimmten ID / einem bestimmten Zeichen übereinstimmt

find('[id^=id]')
Haroon Khalid
quelle