2009-07-30 6 views
86

J'essaie de trouver tous les éléments sur une page dont l'ID d'élément contient un certain texte. Je vais ensuite devoir filtrer les éléments trouvés selon qu'ils sont cachés ou non. Toute aide est grandement appréciée.Rechercher tous les éléments sur une page dont l'ID d'élément contient un certain texte à l'aide de jQuery

+0

double possible de [expressions régulières de sélection JQuery] (http://stackoverflow.com/questions/190253/jquery-selector-regular-expressions) –

Répondre

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

Notez l'astérisque '*' au début du sélecteur matches all elements. Voir le Attribute Contains Selectors, ainsi que les sélecteurs :visible et :hidden.

+8

Peut-être vaut la peine en mentionnant que lors de la comparaison avec un 'id' d'un élément, vous n'utilisez pas de guillemets, où vous faites une comparaison avec un' nom'. '$ ('* [nom * =" mon nom "]: visible')' Pas le plus intuitif et m'a déjà rattrapé. – ficuscr

14

Ce sélectionne tous les DIVs avec un ID contenant « foo » et qui sont visibles

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

Si je suis à la recherche d'éléments de zone de texte plutôt que de divs, est-ce simplement $ ("input: visible [id * = 'foo']"); ? – user48408

+0

ce serait $ ("input [type = 'textbox'] [id * = 'foo']: visible") – karim79

+1

@ port-zéro - les guillemets simples autour de 'foo' ne sont pas nécessaires – karim79

5

Merci à tous les deux. Cela a fonctionné parfaitement pour moi.

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

Si vous trouvez par Contient alors il sera comme ce

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

Si vous trouvez par Commence par alors ce sera comme ça

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

Si vous trouvez par Se termine par alors ce sera comme ça

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

Si vous souhaitez sélectionner des éléments qui id n'est pas une chaîne donnée

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

Si vous souhaitez sélectionner des éléments qui id contient un mot donné, délimité par des espaces

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

Si vous voulez sélectionner des éléments dont id est égal à s donné Tring ou en commençant par cette chaîne suivie d'un trait d'union

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