Znajdź wszystkie elementy na stronie, których identyfikator elementu zawiera określony tekst, za pomocą jQuery

136

Próbuję znaleźć wszystkie elementy na stronie, której identyfikator elementu zawiera określony tekst. Następnie będę musiał przefiltrować znalezione elementy na podstawie tego, czy są ukryte, czy nie. Każda pomoc jest mile widziana.

user48408
źródło
możliwy duplikat wyrażeń regularnych selektora JQuery
Robert MacLean

Odpowiedzi:

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

Zauważ, że gwiazdka „*” na początku selektora pasuje do wszystkich elementów .

Zobacz Atrybut zawiera selektory , a także selektory : visible i : hidden .

karim79
źródło
17
Może warto wspomnieć, że podczas dopasowywania do elementu idnie używasz cudzysłowów, podczas gdy podczas dopasowywania do elementu nametak. $('*[name*="myname"]:visible') Nie jest najbardziej intuicyjny i już mnie dogonił.
ficuscr
Zastąpiłem $ (this) .doStuff (); z this.doStuff (); i pracował
Carlos López Marí
136

Jeśli wyszukujesz według Zawartości, to będzie tak

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

Jeśli wyszukujesz według Rozpoczyna się od, to będzie tak

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

Jeśli znajdujesz według Końcówki z, to będzie tak

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

Jeśli chcesz wybrać elementy, których id nie jest podanym ciągiem

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

Jeśli chcesz wybrać elementy, których nazwa zawiera dane słowo, rozdzielone spacjami

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

Jeśli chcesz wybrać elementy, których id jest równe danemu napisowi lub zaczyna się od tego ciągu, po którym następuje łącznik

     $("input[id|='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });
dnxit
źródło
Witam, jak mogę użyć selektora do wybrania tych elementów, których id należy do tablicy.
bpa.mdl
21

Spowoduje to zaznaczenie wszystkich DIV z identyfikatorem zawierającym „foo” i które są widoczne

$("div:visible[id*='foo']");
port-zero
źródło
Jeśli szukam elementów pola tekstowego zamiast elementów div, to po prostu $ ("input: visible [id * = 'foo']"); ?
user48408
byłoby to $ ("input [type = 'textbox'] [id * = 'foo']: visible")
karim79
1
@ port-zero - pojedyncze cudzysłowy wokół „foo” nie są konieczne
karim79
jeśli próbujesz uzyskać wartość pierwiastków (w moim przypadku rozpiętości) musisz dostać$(this)[0].innerText
Niklas
7

Dziękuję wam obojgu. To zadziałało idealnie dla mnie.

$("input[type='text'][id*=" + strID + "]:visible").each(function() {
    this.value=strVal;
});
user48408
źródło