2009-06-16 23 views
28

I tienen una matriz de cadenas que son selectores jQuery válidos (es decir, IDs de elementos de la página):una matriz de cadenas como un selector jQuery?

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

deseo seleccionar elementos con los identificadores en una matriz jQuery. Esto es probablemente elemental, pero no puedo encontrar nada en línea. Podría tener un for-loop que creara una cadena "#p1,#p2,#p3,#p4,#p5" que luego podría pasar a jQuery como un solo selector, pero ¿no hay otra forma de hacerlo? ¿No hay una manera de pasar una serie de cadenas como un selector?

EDITAR: En realidad, no es an answer out there already.

Respuesta

43

Bueno, ha 'unen':

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

EDITAR - Información adicional:

Es posible seleccionar una serie de elementos, el problema es que aquí no cuenta con los elementos aún, sólo las cadenas selectoras De cualquier forma que lo cortes, tendrás que ejecutar una búsqueda como .getElementById o usar una selección jQuery real.

+0

join() es exactamente la misma. Gracias. – montrealist

12

Prueba el Array.join method:

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

Utilice el método Array.join para unirlas

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

Hehe, sabía que sería demasiado lento en este maldito iphone :-) –

+0

¡Gracias por tomarse el tiempo de todos modos! – montrealist

2

Creo que estás buscando join.

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

¿Qué hay de $(foo.join(", "))?

0

Shorter:

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

Si usted quiere que hagan algo individual también hay each();

En el siguiente ejemplo, cada P IDS clics hace que uno cualquiera de ellos de color rojo:

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

Cuando lanzas 'i' en un parámetro de la función, se encuentra dentro de los valores de las matrices de manera apropiada. Cuando haces '.each()' el formato se ve así:

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

Un ejemplo aún más grande. Supongamos que quiere hacer que la P haga clic en rojo, pero quiere que la otra ps regrese al color predeterminado. ¡Solo haz una selección de nonPea y voila!

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'}); 
    }); 
}); 

Sé que alguien querrá saber acerca de cada matriz de valores como jquery selectores. ¡Espero que todo vaya bien!

Fuente: jQuery .each()