Existe-t-il un sélecteur de caractères génériques pour les identificateurs (id)?

Si j’ai un nombre inconnu d’identifiants partageant un schéma de nommage spécifique, y a-t-il un moyen de les récupérer tous en même temps en utilisant jQuery?

// These are the IDs I'd like to select #instance1 #instance2 #instance3 #instance4 // What do I need to add or how do I need to modify this jQuery selector in order to select all the IDs above? ("#instanceWILDCARD").click(function(){} 

L’ atsortingbut commence par le sélecteur ( '^= ) fonctionnera pour vos identifiants, comme ceci:

 $("[id^=instance]").click(function() { //do stuff }); 

Cependant, pensez à donner à vos éléments une classe commune, par exemple (je me .instance ) .instance , et utilisez ce sélecteur:

 $(".instance").click(function() { //do stuff }); 

Si vous voulez vraiment faire correspondre les classes, pas les identifiants, la syntaxe est un peu plus complexe, car la classe peut avoir plusieurs valeurs.

 // handle elements like 
$('[class^="someclass"]').click(function() { // do stuff }); // handle elements like
$('[class*=" someclass"]').click(function() { // do stuff });

Je suis surpris que personne n’ait mentionné la création de votre propre sélecteur de filtre (en étendant la fonctionnalité Selector de jQuery). Ici, j’ai créé des sélecteurs de caractères génériques que j’ai appelés “likeClass” et “likeId” qui acceptent toute chaîne de caractères génériques et trouveront tous les éléments correspondant à une correspondance (similaire à la correspondance Regex).

Code:

 $.expr[':'].likeClass = function(match){ return $('[class*=" '+ match +'"]'); }; $.expr[':'].likeId = function(match){ return $('[id*=" '+ match +'"]'); }; 

Exemple d’utilisation:

Maintenant, supposons que vous ayez plusieurs éléments div avec des noms similaires tels que .content-1, .content-2, .content-n … etc et que vous souhaitez les sélectionner. Maintenant c’est du gâteau!

$ (‘div: likeClass (content-)’); // Renvoie tous les éléments ayant un nom de classe similaire: content- *

ou

$ (‘div: likeClass (content-)’); // Renvoie tous les éléments ayant un ID similaire: content- *

Oh oui, encore une chose … vous pouvez la chaîner aussi. 🙂

 $('li:likeId(slider-content-)').hide().addClass('sliderBlock').first().fadeIn('fast'); 

Prendre plaisir!

Pas besoin d’expr ou de quelque chose de plus si vous avez jQuery

 jQuery('[class*="someclass"]').click(function(){ }); jQuery('[id*="someclass"]').click(function(){ }); 

Comme indiqué: https://stackoverflow.com/a/2220874/2845401

Pourquoi n’atsortingbuez-vous pas simplement class = "instance" à tous et sélectionnez-les en utilisant $('.instance') ?

Ce sont des identifiants, mais vous pouvez faire quelque chose de similaire à:

 $("[id^='instance']").click(...) 

C’est un peu cher cependant – cela aide si vous pouvez spécifier a) le type d’élément ou b) une position générale dans le DOM, telle que:

 $("#someContentDiv span[id^='instance']").click(...) 

Le sélecteur [id^='...'] signifie essentiellement “trouver un élément dont l’ID commence par cette chaîne, similaire à id$= (ID se termine par cette chaîne), etc.

Vous trouverez une liste complète sur la page de documents jQuery ici .

Utilisez la carotte.

 $("div[id^=instance]").hide(); 

jsFiddle exemple

Nous pouvons le faire de cette façon:

 $(document).ready(function () { $('[id*=btnOk]').live("click", function () { }); }); 

Ceci est la seule réponse correcte à la question générique id.

 $('[id*="Wild card in double quotes"]') 

Cela donnera “Wild card entre guillemets. Et il y a plus !!!”, et aussi “More BS devant Wild. Wild card entre guillemets”.

Vous devez utiliser des guillemets différents de vos tags ‘[]’.