2009-11-15 11 views
10

Spójrz na ten kod, na przykład ...Merge/Dołącz 2 jQuery ustawia

var $div = $('#my div'), 

    $ul = $('#somewhere ul'); 

Jak mogę wykonać metodę jQuery na obu z nich? Na przykład, czy to działa? Jaka jest tutaj najlepsza praktyka?

$($div, $ul).addClass('my-new-class'); 

Czy to nie szukaj $div pod kontekście $ul?

+0

tak byłoby, ja też myślałem na drugi dzień to samo teraz widzę, że nie jestem sama :) – Sinan

+1

'$ ('# my div, #somewhere ul'). addClass (" moja-nowa-klasa ");' jest w porządku, podobnie jak '$ div.add ($ ul) .addClass ('moja-nowa-klasa ");' – ChaseMoskal

Odpowiedz

19

jQuery zapewnia metodę add do tego. Najczęstszym przypadkiem jest, aby dodać więcej elementów do zestawu jQuery, które pasują do danego selektora (przekazany do add), ale można go używać do wykonywania do standard union z dwóch zestawów też:

$c = $a.add($b).addClass('foo') 

add zwraca nowy owinięty zestaw, zawierający scaloną i unikalną kombinację this i podanego zestawu. Zauważ, że $b pozostaje niezmieniony.

+0

Dziękuję! Wiedziałem, że odpowiedź jest ukryta ... – alex

+0

Czy '$ a' również pozostaje niezmienione? –

+0

'$ a' pozostaje niezmienione. (To jest stary wątek - obecnie używa jQuery 3.2.1.) –

-2

spróbować

$('#my div, #somewhere ul').addClass('my-new-class'); 

wygląd here

+0

Wiem, że to zadziała, ale czasami ustawiłem 2 bufory na początku skryptu i chciałbym uniknąć ponownego zdefiniowania ich później w metodach itp. – alex

3

Wiem, że to bardzo, bardzo późno, ale można również wykonać następujące czynności:

$().add($div).add($ul).addClass('my-new-class'); 
+0

Dlaczego pierwszy pusty? – alex

+2

'$ div.add ($ ul) ...' ma więcej sensu ... Nie widzę, jak to dodaje żadnej wartości do już istniejących odpowiedzi. –

+3

@FelixKling W jednej linii niewiele. Ale używam tego pojęcia: 'var initted = $();' ... później, pod jednym warunkiem, 'initted.add ($ foo)' ... później, w innym (nie wykluczającym się) warunku , 'initted.add ($ foo)' ... i tak dalej. Zaczynając od [pustego zestawu] (http://en.wikipedia.org/wiki/Empty_set) jest _dużo_ cenny. – Izkata