2011-10-14 10 views
5

ja je skonfigurować na początku skryptu:Jak korzystać z jQuery (elementArray)?

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

Indziej w skrypcie, muszę zmienić CSS dla wszystkich 3 elementów w tym samym czasie. Zamiast to zrobić:

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

chcę zrobić coś jak jedna z nich:

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

Jednak jedyną rzeczą, która wydaje się działać jest poprzez odniesienie identyfikatory bezpośrednio, jak to:

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

Wolałbym używać odniesień do elementów zamiast identyfikatorów bezpośrednio, ponieważ mogą one zmieniać się dynamicznie. czy to możliwe?

Odpowiedz

7

Zastosowanie .add():

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

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

+1

Niestety, nie robi nie wydaje się być sposobem na dodanie więcej niż jednego obiektu jQuery na czas. Nie jest to jednak zbyt nierozsądne, ponieważ obiekty jQuery same mają charakter tablicowy. –

+0

To rzeczywiście działa w twoim przykładzie jsfiddle, ale nie w moim skrypcie. Myślę, że mam oddzielny problem ze zmiennym zakresem, aby to zrozumieć. Dzięki! – velocityhead

1

zapisać wszystkie trzy pamięci podręcznej selektorów w tablicy,

var elements = [grid, lines, background]; 

następnie pętla przez nich, kiedy trzeba:

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

Polecam również prefiksowanie zbuforowanych selektorów za pomocą $, aby było jasne, czym one są. :)

+0

To nie jest naprawdę idiomatyczne jQuery i nie wszystkie przeglądarki obsługują 'Array.forEach()' (niestety). –

+1

To działa, ale wygląda na to, że powinien istnieć prostszy sposób bez użycia '.each()' – velocityhead

1

Próbowałem użyć poniższego oświadczenia i uzyskać sukces.

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

ja zorientować, że „elementy DOM owinąć w obiekcie jQuery” oznaczają przedmioty elementów możemy uzyskać za pomocą $().

Mam nadzieję, że ta odpowiedź pomaga.

Powiązane problemy