2011-10-14 25 views
5

Mi impostare queste fino all'inizio dello script:Come si usa jQuery (elementArray)?

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

Altrove nella sceneggiatura, ho bisogno di cambiare il CSS per tutti e 3 gli elementi allo stesso tempo. Piuttosto che fare questo:

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

voglio fare qualcosa di simile a uno di questi:

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

Tuttavia, l'unica cosa che sembra funzionare è facendo riferimento gli ID direttamente, in questo modo:

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

Preferirei utilizzare i riferimenti agli elementi invece degli ID direttamente, poiché possono cambiare dinamicamente. È possibile?

risposta

7

Uso .add():

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

Demo: http://jsfiddle.net/mattball/xj5bb/

+1

Purtroppo, ci fa non sembra essere un modo per aggiungere più di un oggetto jQuery alla volta. Questo non è terribilmente irragionevole, tuttavia, dal momento che gli oggetti jQuery stessi sono simili ad array. –

+0

In effetti funziona nel tuo esempio jsfiddle, ma non nel mio script. Penso di avere un problema di ambito variabile separato da capire. Grazie! – velocityhead

1

salvare tutti e tre i selettori cache in un array,

var elements = [grid, lines, background]; 

quindi ciclo attraverso di loro quando è necessario:

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

Suggerirei anche di anteporre i selettori memorizzati nella cache a $ per chiarire cosa sono. :)

+0

Questo jQuery non è veramente idiomatico, e non tutti i browser supportano 'Array.forEach()' (purtroppo). –

+1

Funziona, ma sembra che ci dovrebbe essere un modo più semplice senza usare '.each()' – velocityhead

1

Ho provato a utilizzare l'istruzione di seguito e ottenere il successo.

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

immagino che "elementi DOM avvolgono in un oggetto jQuery" significa oggetti elementi si ottiene utilizzando $().

Spero che questa risposta sia d'aiuto.