2012-01-29 8 views
20

Sto cercando un modo per combinare le variabili jquery. Guardando attraverso domande correlate, nessuno sembra provare ciò che voglio fare.Combina le variabili jquery in un unico selettore?

$("body, div, p") è un metodo di combinazione per i selettori, ma dopo aver assegnato un selettore a una variabile, come vengono combinati in un modo simile?

Ecco un metodo che ho provato, ma non è riuscito a farlo funzionare. Ho anche provato a inserirli in un array (aggiungendo semplicemente parentesi prima di $ body e dopo $ p).

$body = $("body"); 
$div = $("div"); 
$p = $("p"); 
$mixed = $($body, $div, $p); 
// $mixed = $("body, div, p"); is NOT what I am looking for 

Nel mio script vero ho alcune <select> ingressi assegnati alle variabili. Vorrei metterli in gruppi, quindi dire che ho uno <select> che ha "FRUIT" e un altro che ha "VEGETABLES", potrei metterli entrambi in una variabile jquery chiamata "PRODUCE". Quindi se ho bisogno di eseguire qualcosa su entrambi, io uso invece produrre.

... Questo potrebbe essere solo un modo stupido di fare le cose, però.

+0

Whhy non si usa '$ ("select")' dal entrambi i tuoi elementi sono selezionati? – Mike

+1

Questo potrebbe essere solo un modo stupido di fare le cose, in effetti ... ** =) ** – gdoron

+0

Voglio selezionare come ciliegie quelle che dovrebbero essere raggruppate. Suppongo che questo potrebbe essere fatto dando loro tutti gli ID, ma dal momento che vengono aggiunti programmaticamente preferisco aggiungerli senza utilizzare alcun attributo. –

risposta

42

Forse stai cercando .add()?

$mixed = $body.add($div).add($p); 
+0

Mi stai prendendo in giro. L'ho cercato per così tanto tempo ... Non pensavo che esistesse. Non ho mai pensato di cercare il termine "aggiungi", però. ("Combina" non si trova nemmeno nella pagina, fml) –

+0

@ RadGH - Accertati di accettare questa risposta se è corretta;). –

+0

Timer di attesa di 10 minuti! –

0

Anch'io stavo cercando qualcosa di simile. Nel mio caso ho avuto alcuni oggetti passati in una funzione comune e alcuni creati in memoria e volevo applicare lo stesso evento click a tutti gli oggetti. Alla fine sono andato con la soluzione di aggiunta di James sopra, ma ho pensato di condividere un'altra opzione.

Se si mettono gli oggetti in un array, è possibile utilizzare ciascun iteratore per eseguire un'azione su di essi.

[$body, $div, $p].each(function(i,e) { e.DoSomething(); }); 

Questa sintassi è più lungo e non si ottiene un oggetto misto $ riutilizzabile, ma ci possono essere alcuni scenari in cui questo è utile.

2

Per me, funziona benissimo in jQuery 1.10.2 semplicemente combinare gli elementi di un array letterale, prima di passare al costruttore jQuery: $mixed = $([$body, $div, $p]);

+0

Non funziona per me. Versione 1.11 – Boykodev