2009-07-30 9 views
86

Próbuję znaleźć wszystkie elementy na stronie, której identyfikator elementu zawiera określony tekst. Będę musiał filtrować znalezione elementy na podstawie tego, czy są one ukryte, czy nie. Każda pomoc jest bardzo doceniana.Znajdź wszystkie elementy na stronie, której identyfikator elementu zawiera określony tekst za pomocą jQuery

+0

możliwe duplikat [wyrażenia regularne selektor jQuery] (http://stackoverflow.com/questions/190253/jquery-selector-regular-expressions) –

Odpowiedz

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

Zwróć uwagę na gwiazdkę "*" na początku selektora matches all elements.

Zobacz selektory Attribute Contains Selectors, a także :visible i :hidden.

+8

Może warto wspominając, że przy dopasowywaniu do "id" elementu nie używasz cudzysłowów, gdzie przy dopasowywaniu do 'nazwy' robisz. '$ ('* [name * =" myname "]: visible')' Nie jest to najbardziej intuicyjne i już mnie złapało. – ficuscr

14

Wybiera wszystkie div z identyfikatorem zawierającym „foo” i które są widoczne

$("div:visible[id*='foo']"); 
+0

Jeśli szukam elementów textbox zamiast div, to po prostu $ ("input: visible [id * = 'foo']"); ? – user48408

+0

będzie to $ ("input [type = 'textbox'] [id * = 'foo']: visible") – karim79

+1

@ port-zero - pojedyncze cudzysłowy wokół "foo" nie są konieczne – karim79

5

Dzięki was obu. To działało idealnie dla mnie.

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

Jeśli znalezienie przez Zawiera wtedy to będzie jak ten

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

Jeśli znalezienie przez rozpoczyna się to będzie tak

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

Jeśli znajdziesz to przez Kończy się, to będzie tak

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

Jeśli chcesz wybrać elementy, które id nie jest dany ciąg

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

Jeśli chcesz wybrać elementy, które id zawiera danego słowa, rozdzielonych spacjami

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

Jeśli chcesz wybrać elementy, które id jest równe danemu s tring lub wychodząc z tego łańcucha następuje myślnik

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