2009-06-16 8 views
28

Ho un array di stringhe che sono selettori di jQuery validi (cioè ID di elementi della pagina):un array di stringhe come un selettore jQuery?

["#p1", "#p2", "#p3", "#p4", "#p5"] 

voglio per selezionare gli elementi con gli ID in una matrice di jQuery. Questo è probabilmente elementare, ma non riesco a trovare nulla online. Potrei avere un ciclo for-che crea una stringa "#p1,#p2,#p3,#p4,#p5" che potrebbero poi essere passato a jQuery come un unico selettore, ma non c'è un altro modo? Non c'è un modo per passare una serie di stringhe come selettore?

MODIFICA: In realtà, c'è an answer out there already.

risposta

43

Beh, non c'è 'unire':

["#p1", "#p2", "#p3", "#p4", "#p5"].join(", ") 

EDIT - Info extra:

E 'possibile selezionare una serie di elementi, problema è qui non si hanno gli elementi ancora, solo le corde del selettore. In qualsiasi modo si fetta Dovrai eseguire una ricerca come .getElementById o utilizzare un vero e proprio jQuery selezionare.

+0

join() è esattamente. Grazie. – montrealist

12

provare il Array.join method:

var a = ["#p1", "#p2", "#p3", "#p4", "#p5"]; 
var s = a.join(", "); 
//s should now be "#p1, #p2, #p3, ..." 
$(s).whateverYouWant(); 
4

Utilizzare il metodo Array.join di unirsi a loro insieme

$(theArray.join(',')); 
+0

Hehe, sapevo che sarei troppo lento su questo maledettamente iphone :-) –

+0

Grazie per aver dedicato del tempo comunque! – montrealist

2

Penso che stai cercando join.

var arr = ["#p1", "#p2", "#p3", "#p4", "#p5"]; 
$(arr.join(",")) 
6

Che dire di $(foo.join(", "))?

0

Shorter:

["#p1", "#p2", "#p3", "#p4", "#p5"].toArray() 
2

Se vuoi che facciano qualcosa individualmente c'è anche .each();

Nell'esempio che segue, ogni p ids scatti fa uno qualsiasi di essi rosso:

var peas = ['#p1','#p2','#p3','#p4','#p5']; 
$.each(peas, function(i){ 
    $(peas[i]).click(function(){ 
     $(peas[i]).css({'color':'red'}); 
    }); 
}); 

Quando gettate 'i' in un parametro funzione, trovano i valori all'interno delle matrici modo appropriato. Quando fai '.each()' il formato è il seguente:

$.each(array, function(i){ 
    // any code you wish as long as you have an array selector 
    //$(array[i]).whatever function 
}); 

Un esempio ancora più grande. Di 'che vuoi fare la P che fai clic in rosso, ma vuoi che l'altra ps torni al colore predefinito. Basta creare una serie di nonPea e voilà!

var peas = ['#p1','#p2','#p3','#p4','#p5'] 
, nonPeas = ['#p5, #p2, #p3, #p4' 
       ,'#p1, #p5, #p3, #p4' 
       ,'#p1, #p2, #p5, #p4' 
       ,'#p1, #p2, #p3, #p5' 
       ,'#p1, #p2, #p3, #p4'] 
; 
$.each(peas, function(i){ 
    $(peas[i]).click(function(){ 
     $(peas[i]).css({'color':'red'}); 
     $(nonPeas[i]).css({'color':'black'}); 
    }); 
}); 

So che qualcuno è tenuto a voler sapere su ogni array di valori come selettori jQuery. Spero che tutto vada bene!

Fonte: jQuery .each()

Problemi correlati