2011-08-05 46 views
8

我要做到以下幾點:衰落多個元素simutaneously - jQuery的

$(newPanel, prevBtn, nextBtn, infoPanel).fadeIn(200, function() { 
} 

這些增值經銷商和jQuery創建的div

,但只有第一個元素淡入,我真的需要的所有元素淡入與此同時。任何想法?

回答

22

可以使用add的方法得到相同的jQuery對象中的元素:

newPanel.add(prevBtn).add(nextBtn).add(infoPanel).fadeIn(200); 
+0

啊,這很好。下次會嘗試。 – inquam

+0

@Guffa我加了一個回調函數,回調函數執行了四次。這是正常的任何分組? – Wesley

+1

@Wesley:由於jQuery對象中有四個元素,每個動畫都有自己的回調函數。從文檔:「如果多個元素是動畫的,重要的是要注意,回調是每個匹配元素執行一次,而不是整個動畫一次。」 http://api.jquery.com/fadeIn/ – Guffa

1

假設newPanel等等都是這樣創建的變量:

newPanel = $("#newPanel"); 

只是寫:

newPanel.fadeIn(200); 
prevBtn.fadeIn(200); 
nextBtn.fadeIn(200); 
infoPanel.fadeIn(200); 
0
$.each([newPanel, prevBtn, nextBtn, infoPanel], function(i, el) { 
    $(el).fadeIn(200); 
}); 

更新:
如果你想調用的函數只有一次,你可以通過添加元素來做點什麼like @Guffa did同樣的jQuery的收集,然後才申請動畫(一次):

[newPanel, prevBtn, nextBtn, infoPanel] 
    .reduce(function(el, next) { 
     return el.add(next); 
    }) 
    .fadeIn(200); 
+0

這會不會是一樣的做他們一次一個? – 472084

0

它要麼使用$.each做或者我會建議你將他們按類或ID分組,然後使用它們淡入淡出。

例如,您可以在組類中的所有相關的元素,然後做這些類,而不是每一個元素的$.each電話。

+0

如果我添加一個回調函數,將爲每個有類的元素執行?我只想要一次回調。 @inquam – Wesley

+1

你的意思是,如果你有一個回調時,在動畫完成調用它會爲使用類或曾經使用類的每一個元素元素的整個集合觸發一次?我其實並不知道。我猜想它會爲每個元素觸發一次,因爲我認爲它會附加到每個元素上。如果回調已被調用一次,可以通過添加一個檢查來克服。類似於「if(!firsttime)return;'。也許不是世界上最漂亮的東西,但它會起作用。 – inquam