2011-01-21 44 views
0

多個元素我有這樣的:應用CSS中的變量

var $e1 = $('#e1'); 
var $e2 = $('#e2'); 
var $e3 = $('#e3'); 

這不起作用:

var $all = [$e1, $e2, $e3]; 
$($all).css('background', '#ff0000'); 

我應該怎麼做,同時重用$el1$el2$el3

我不想做的事:

$('#e1, #e2, #e3') 

這可能是很簡單的事,但我不知道該怎麼尋找,找出。

+1

爲什麼不如果我想問,你想做$('#e1,#e2,#e3')嗎? – sjobe 2011-01-21 14:07:42

+0

變量名稱中的$`-prefix用於jQuery對象。不要將它用於常規數組,它只會讓你困惑。 – 2011-01-21 14:27:17

回答

3

你可以這樣做:

var $all = $e1.add($e2).add($e3); 

還是這樣(看起來有點鈍,但它是正確的方式 - 你必須提取從節點jQuery對象先用[0]):

var $all = $([$e1[0], $e2[0], $e3[0]]); 

注:在我的例子中,$all已經是一個jQuery對象,所以你不需要像這樣再次包裝它:$($all)。只要做到:

$all.css('background', '#ff0000'); 
0

編輯:甚至更好:

var $e1 = $('#e1'); 
var $e2 = $('#e2'); 
var $e3 = $('#e3'); 
var all = $e1.add($e2).add($e3); 
all.css('background', '#ff0000'); 
0
$e1.add($e2).add($e3) 

是合併不同的元素/ jQuery的對象的另一種方式。

參考:.add()

0

編輯: 包裝數組中jQuery的實例,並通過其內容

all = [$e1, $e2, $e3]; 

$(all).each(function(index, element){ 
    element.css('background', '#ff0000'); 
}) 
0

迭代那麼如果你不想使用選擇,樣式應用到的每個元素陣列。

for(i = 0; i < $all.length; i++) 
    $all[i].css('background', '#ff0000'); 
0

你可以做什麼,你有你的例子:

var $all = [$e1, $e2, $e3], 
    i = $all.length; 

for(; i--;) { 
    $all[i].css('background', '#f00'); 
} 
0

看來你CA做的只是這一點:

$(deleteBtn).add(copyBtn).add(moveBtn).css('background', 'white'); 

由於這裏說的http://api.jquery.com/add/