72 votes

Y at-il un sélecteur de classe générique

Si j'ai quelques classes nommées quelque chose de similaire est-il un moyen de les saisir tous en un seul coup

 #instance1
#instance2
#instance3
#instance4

("#instance").click(function()
//GRAB ALL OF THEM
 

183voto

Nick Craver Points 313913

L' attribut start-with selector ( '^= ) fonctionnera pour vos identifiants, comme ceci:

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

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

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

90voto

Eric Points 1505

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

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

// handle elements like <div class="foo someclass1"></div>
$('[class*=" someclass"]').click(function() {
   // do stuff
});
 

12voto

Timothy Perez Points 6379

Je suis surpris que personne n'a mentionné la création de votre propre sélecteur de filtre (par l'extension de jQuery fonctionnalité de sélection). J'ai créé ici un générique sélecteurs j'ai appelé "likeClass" et "likeId" qui accepte n'importe quelle chaîne de caractères génériques et de trouver tous les éléments qui sont un match (similaire à l'expression rationnelle correspondant).

Code:

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

Exemple D'Utilisation:

Maintenant, disons que vous avez plusieurs éléments div avec des noms similaires comme .contenu-1, .contenu-2, .contenu-n... etc et vous souhaitez sélectionner. Maintenant, c'est du gâteau!

$('div:likeClass(contenu)'); // Renvoie tous les éléments qui ont une semblable Classname: contenu-*

ou

$('div:likeClass(contenu)'); // Renvoie tous les éléments qui ont une semblable ID: contenu-*

Ah oui, encore une chose... vous pouvez la chaîne aussi. :)

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

Profitez-en!

11voto

Shinrai Points 11

Pas besoin d'exprime supplémentaire ou de quelque chose d'extraordinaire si vous avez jQuery

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

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

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

3voto

casablanca Points 41814

Pourquoi ne pas simplement assigner class = "instance" à tous et les sélectionner en utilisant $('.instance') ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X