2013-10-28 71 views
2

一些jQuery動畫方法的參數描述爲complete,這是一個動畫完成後調用的函數。例如:`complete`參數的目的是什麼?

$(obj).slideUp(duration, easing, complete()); 

這是怎麼從如下動畫後調用complete不同?

$(obj).slideUp(duration, easing) 
.complete(); 

回答

3
$(obj).slideUp(duration, easing, complete()); 

這是錯誤的。這叫complete之前slideUp甚至被稱爲。

$(obj).slideUp(duration, easing); 
complete(); 

此執行slideUp然後立即調用completeslideUp動畫可能不會(事實上,當然不會)尚未完成的時間complete被調用。

$(obj).slideUp(duration, easing, function() { 
    alert('Complete!'); 
}); 

// or 

$(obj).slideUp(duration, easing, complete); 
            // ^^ look ma, no() ! 

現在是你應該如何使用它。 「完成!」將會在slideUp動畫完成後提醒。

3

不同的是,在第二種情況下,complete被動畫後立刻開始稱爲,而將它作爲回調在動畫觸發它。

動畫其實可以asyncronous,所以JavaScript執行繼續您啓動動畫之後,因此立即調用complete()$(obj).slideUp(duration, easing);保證動畫完成後的complete通話將被執行後,纔開始。

而且

$(obj).slideUp(duration, easing, complete()); 

確實應該

$(obj).slideUp(duration, easing, complete); 

事實上,在第一種情況下,我們在調用complete功能動畫開始甚至以前

最後,記住,第二個例子似乎是錯誤的:

$(obj).slideUp(duration, easing) 
.complete(); 

這是鏈接通過調用slideUp調用complete但jQuery對象沒有complete方法。它應該是:

$(obj).slideUp(duration, easing); 
complete(); 

因爲它實際上是在以前的問題編輯。

+0

不應該是'$(obj).slideUp(duration,easing,function(){complete()});' –

+0

這是完全一樣的東西。 –

+0

我記得它用來立即運行,除非你把它包裝在一個函數中。 –

相關問題