2011-10-14 30 views
5

puse estas arriba al principio de la secuencia de comandos:¿Cómo se usa jQuery (elementArray)?

var grid = $('#grid'); 
var lines = $('#lines'); 
var background = $('#background'); 

En otras partes de la secuencia de comandos, tengo que cambiar la CSS para los 3 elementos al mismo tiempo. En lugar de hacer esto:

grid.css({... 
lines.css({... 
background.css({... 

quiero hacer algo como uno de ellos:

$(grid, lines, background).css({... 
$([grid, lines, background]).css({... 

Sin embargo, lo único que parece funcionar es haciendo referencia a los ID directamente como aquí:

$('#grid, #lines, #background').css({ 

Preferiría utilizar referencias a los elementos en lugar de los ID directamente, ya que pueden cambiar dinámicamente. es posible?

Respuesta

7

Uso .add():

grid.add(lines).add(background).css({...}); 

Demostración: http://jsfiddle.net/mattball/xj5bb/

+1

Desafortunadamente, no lo hace no parece ser una forma de agregar más de un objeto jQuery en el momento. Sin embargo, esto no es terriblemente irrazonable, ya que los objetos de jQuery son similares a una matriz. –

+0

Esto de hecho está trabajando en su ejemplo de jsfiddle, pero no en mi script. Creo que tengo un problema de alcance variable diferente para resolver. ¡Gracias! – velocityhead

1

guardar los tres selectores en caché en una matriz,

var elements = [grid, lines, background]; 

a continuación, recorrer ellos cuando es necesario:

elements.each(function(element){ 
    element.css({...}) 
}) 

También recomendaría el prefijo de los selectores en caché con un $ para dejar en claro cuáles son. :)

+0

Esto no es realmente idiomático jQuery, y no todos los navegadores son compatibles con 'Array.forEach()' (tristemente). –

+1

Esto funciona, pero parece que debería haber una manera más simple sin usar '.each()' – velocityhead

1

Intenté utilizar la declaración a continuación y obtener éxito.

$.each([$('grid'), $('line'), $('background')], function(index) { 
    $(this).*jqueryAPIs(...)*; 
}); 

Calculo que "los elementos DOM envuelven en un objeto jQuery" significa objetos de elementos que obtenemos mediante el uso de $().

Espero que ayude esta respuesta.