2009-07-30 7 views
86

Ich versuche, alle Elemente auf einer Seite zu finden, deren Element-ID einen bestimmten Text enthält. Ich muss dann die gefundenen Elemente filtern, abhängig davon, ob sie versteckt sind oder nicht. Jede Hilfe wird sehr geschätzt.Finden Sie alle Elemente auf einer Seite, deren Element-ID einen bestimmten Text enthält mit jQuery

+0

möglich Duplikat [JQuery-Selektor reguläre Ausdrücke] (http://stackoverflow.com/questions/190253/jquery-selector-regular-expressions) –

Antwort

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

Beachten Sie das Sternchen '*' am Anfang des Selektors matches all elements.

Siehe die Attribute Contains Selectors, sowie die :visible und :hidden Selektoren.

+8

Vielleicht beginnt, gefolgt wert Erwähnen Sie, dass Sie, wenn Sie mit der ID eines Elements übereinstimmen, keine Anführungszeichen verwenden, wenn Sie mit einem "Namen" übereinstimmen. '$ ('* [name * =" myname "]: sichtbar')' Nicht die intuitivste und hat mich schon früher erwischt. – ficuscr

14

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

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

Wenn ich nach Textbox-Elementen anstatt nach divs suche, ist es einfach $ ("input: visible [id * = 'foo']"); ? – user48408

+0

wäre es $ ("input [type = 'textbox'] [id * = 'foo']: sichtbar") – karim79

+1

@ port-zero - die einzelnen Anführungszeichen um 'foo' sind nicht notwendig – karim79

5

Dank euch beiden. Das hat perfekt für mich funktioniert.

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

Wenn Sie mit dem zu finden sind Enthält dann wird es

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

wie dieser sein, wenn Sie von Beginnt mit zu finden sind, dann wird es wie folgt

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

Wenn Sie von Endet mit finden, dann wird es so sein

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

Wenn Sie Elemente auswählen, welche id nicht eine Zeichenkette ist

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

Wenn Sie Elemente auswählen möchten, die id ein gegebenes Wort enthält, durch Leerzeichen getrennt

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

Wenn Sie Elemente auswählen möchten, die ID ist gleich einem gegebenen s Tring oder mit dieser Zeichenfolge durch einen Bindestrich

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