Suchen Sie mit jQuery alle Elemente auf einer Seite, deren Element-ID einen bestimmten Text enthält

130

Ich versuche, alle Elemente auf einer Seite zu finden, deren Element-ID einen bestimmten Text enthält. Ich muss dann die gefundenen Elemente danach filtern, ob sie ausgeblendet sind oder nicht. Jede Hilfe wird sehr geschätzt.

user48408
quelle
Mögliches Duplikat der regulären Ausdrücke
Robert MacLean,

Antworten:

201
$('*[id*=mytext]:visible').each(function() {
    $(this).doStuff();
});

Beachten Sie, dass das Sternchen '*' am Anfang des Selektors mit allen Elementen übereinstimmt .

Siehe das Attribut enthält Selektoren sowie die : sichtbaren und : versteckten Selektoren.

karim79
quelle
17
Erwähnenswert ist vielleicht, dass Sie beim Abgleich mit einem Element idkeine Anführungszeichen verwenden, während Sie beim Abgleich mit einem Element Anführungszeichen nameverwenden. $('*[name*="myname"]:visible') Nicht die intuitivste und hat mich schon einmal eingeholt.
Ficuscr
Ich habe $ (this) .doStuff () ersetzt. with this.doStuff (); und arbeitete
Carlos López Marí
133

Wenn Sie von Contains finden, wird es so sein

    $("input[id*='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Wenn Sie nach Starts With suchen, wird es so sein

    $("input[id^='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Wenn Sie nach Ends With suchen, wird es so sein

     $("input[id$='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Wenn Sie Elemente auswählen möchten, deren ID keine bestimmte Zeichenfolge ist

    $("input[id!='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Wenn Sie Elemente auswählen möchten, deren Name ein durch Leerzeichen getrenntes Wort enthält

     $("input[name~='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Wenn Sie Elemente auswählen möchten, deren ID einer bestimmten Zeichenfolge entspricht oder mit dieser Zeichenfolge gefolgt von einem Bindestrich beginnt

     $("input[id|='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });
dnxit
quelle
Hallo, wie kann ich mit einem Selektor die Elemente auswählen, deren ID zu einem Array gehört?
bpa.mdl
20

Dies wählt alle DIVs mit einer ID aus, die 'foo' enthält und die sichtbar sind

$("div:visible[id*='foo']");
Port-Null
quelle
Wenn ich eher nach Textfeldelementen als nach Divs suche, ist es einfach $ ("Eingabe: sichtbar [id * = 'foo']"); ?
user48408
es wäre $ ("input [type = 'textbox'] [id * = 'foo']: sichtbar")
karim79
1
@ port-zero - die einfachen Anführungszeichen um 'foo' sind nicht erforderlich
karim79
Wenn Sie versuchen, den Wert der Elemente (in meinem Fall überspannt) zu erhalten, müssen Sie$(this)[0].innerText
Niklas
6

Danke euch beiden. Das hat bei mir perfekt funktioniert.

$("input[type='text'][id*=" + strID + "]:visible").each(function() {
    this.value=strVal;
});
user48408
quelle