Encuentre todos los elementos en una página cuyo ID de elemento contiene un cierto texto usando jQuery

Respuestas:

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

Tenga en cuenta que el asterisco '*' al comienzo del selector coincide con todos los elementos .

Consulte el atributo contiene selectores , así como los selectores : visible y : oculto .

karim79
fuente
17
Tal vez valga la pena mencionar que cuando se compara con un elemento, idno se utilizan comillas, mientras que cuando se compara con un elemento namesí. $('*[name*="myname"]:visible') No es el más intuitivo y me ha pillado antes.
ficuscr
Reemplacé $ (this) .doStuff (); con this.doStuff (); y trabajado
Carlos López Marí
133

Si lo encuentra por Contiene , será así

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

Si estás buscando por Comienza con, entonces será así

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

Si está buscando por Finaliza con, entonces será así

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

Si desea seleccionar elementos cuya identificación no es una cadena dada

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

Si desea seleccionar elementos cuyo nombre contiene una palabra dada, delimitada por espacios

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

Si desea seleccionar elementos cuya identificación es igual a una cadena dada o comenzar con esa cadena seguida de un guión

     $("input[id|='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });
dnxit
fuente
Hola, ¿cómo puedo usar un selector para seleccionar aquellos elementos cuya identificación pertenece a una matriz?
bpa.mdl
20

Esto selecciona todos los DIV con una ID que contiene 'foo' y que son visibles

$("div:visible[id*='foo']");
puerto cero
fuente
Si estoy buscando elementos de cuadro de texto en lugar de divs, ¿es simplemente $ ("input: visible [id * = 'foo']"); ?
user48408
sería $ ("input [type = 'textbox'] [id * = 'foo']: visible")
karim79
1
@ port-zero - las comillas simples alrededor de 'foo' no son necesarias
karim79
si está tratando de obtener el valor de los elementos (en mi caso se extiende) debe obtenerlo$(this)[0].innerText
Niklas
6

Gracias a los dos. Esto funcionó perfectamente para mí.

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