Rechercher tous les éléments sur une page dont l'ID d'élément contient un certain texte à l'aide de jQuery

130

J'essaye de trouver tous les éléments sur une page dont l'ID d'élément contient un certain texte. Je devrai ensuite filtrer les éléments trouvés selon qu'ils sont masqués ou non. Toute aide est grandement appréciée.

user48408
la source
duplication possible d' expressions régulières du sélecteur JQuery
Robert MacLean

Réponses:

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

Notez que l'astérisque «*» au début du sélecteur correspond à tous les éléments .

Voir l' attribut contient des sélecteurs , ainsi que les sélecteurs : visible et : hidden .

karim79
la source
17
Il vaut peut-être la peine de mentionner que lorsque vous comparez avec un élément, idvous n'utilisez pas de guillemets, alors que lorsque vous comparez avec un, namevous le faites. $('*[name*="myname"]:visible') Pas le plus intuitif et m'a rattrapé avant.
ficuscr
J'ai remplacé $ (this) .doStuff (); avec this.doStuff (); et travaillé
Carlos López Marí
133

Si vous trouvez par Contient, ce sera comme ça

    $("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 Ends With 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 dont l' 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 dont le nom contient un mot donné, délimité par des espaces

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

Si vous souhaitez sélectionner des éléments dont l' id est égal à une chaîne donnée ou 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
     });
dnxit
la source
Bonjour, comment puis-je utiliser un sélecteur pour sélectionner les éléments dont l'id appartient à un tableau.
bpa.mdl
20

Ceci sélectionne toutes les DIV avec un ID contenant 'foo' et qui sont visibles

$("div:visible[id*='foo']");
port zéro
la source
Si je recherche des éléments de zone de texte plutôt que des divs, est-ce simplement $ ("input: visible [id * = 'foo']"); ?
user48408
ce serait $ ("input [type = 'textbox'] [id * = 'foo']: visible")
karim79
1
@ port-zero - les guillemets simples autour de 'foo' ne sont pas nécessaires
karim79
si vous essayez d'obtenir la valeur des éléments (dans mon cas, des travées), vous devez obtenir$(this)[0].innerText
Niklas le
6

Merci à vous deux. Cela a parfaitement fonctionné pour moi.

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