2011-10-14 59 views
5

我在腳本的開始設置這些了:你如何使用jQuery(elementArray)?

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

在亞洲其他腳本,我需要改變CSS在同一時間的所有3個元素。而不是這樣做:

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

我想這樣做的其中之一:

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

然而,這似乎工作的唯一事情就是通過直接引用的ID,像這樣:

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

我傾向於直接使用對元素的引用而不是ID,因爲它們可能會動態更改。這可能嗎?

回答

7

使用.add()

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

演示:http://jsfiddle.net/mattball/xj5bb/

+1

不幸的是,確實存在似乎不是一種在時間添加多個jQuery對象的方法。但這並不是非常不合理,因爲jQuery對象本身就是類似數組的。 –

+0

這確實在你的jsfiddle例子中工作,但不是在我的腳本中。我想我有一個單獨的變量範圍問題想弄清楚。謝謝! – velocityhead

1

保存所有三個緩存選擇在一個陣列,

var elements = [grid, lines, background]; 

然後通過他們循環,當你需要:

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

我也建議在緩存選擇器前加一個$來清楚它們是什麼。 :)

+0

這不是真正的慣用jQuery,並不是所有的瀏覽器都支持'Array.forEach()'(悲哀地)。 –

+1

這有效,但它似乎應該有一個更簡單的方法,而不使用'.each()' – velocityhead

1

我試着用下面的語句,並獲得成功。

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

我估計,「DOM元素的jQuery包裹」是指我們通過使用$()得到元素對象。

希望此回答有幫助。