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


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 .


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
     });

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']");

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;
});
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.