Est-il possible de générer une chaîne de sélecteurs et de méthodes à l'intérieur d'une boucle?

Par exemple, j'ai un tableau d'éléments:

array[0] = '.type1value1, .type1value2, .type1value3';
array[1] = '.type2value1, .type2value2, .type2value3';
array[2] = '.type3value1, .type3value2, .type3value3';

J'ai en quelque sorte besoin de construire une chaîne de méthodes en utilisant les éléments du tableau comme sélecteurs (en boucle ou tout autre moyen possible!) Afin que je me retrouve avec ce qui suit: -

$('.type1value1, .type1value2, .type1value3').filter('.type2value1, .type2.value2, .type2value3').filter('.type3value1, .type3value2, .type3value3');
0
billyonecan 8 déc. 2011 à 16:34

3 réponses

Meilleure réponse

Si je vous comprends bien, vous n'avez même pas besoin de faire une boucle:

var firstSelector = array.shift(); //returns first item in the array and removes it from the original array
var filterSelector = array.join(',');

$(firstSelector).filter(filterSelector);
1
maxedison 8 déc. 2011 à 12:44

Pourquoi ne pouvez-vous pas simplement faire quelque chose comme:

var $test = $(array[0]);

for (var i = 1; i < array.length; i++) {
   $test =  $test.filter(array[i]);
} 

En regardant votre exemple, la valeur de chaque élément du tableau est exactement la valeur que vous souhaitez passer en tant que paramètre de sélecteur à .filter()

1
njr101 8 déc. 2011 à 12:45

Utilisez la fonction suivante pour lui passer un tableau de sélecteurs ...

function getSet(arrSet){
    var elements = $(arrSet[0]);
    for (var i = 1; i < arrSet.length; i++) {
        elements = $(elements).filter(arrSet[i]);
    }                       
}
1
Shlomi Komemi 8 déc. 2011 à 12:55