2011-05-03 56 views
1

在這裏看到:http://blog.jquery.com/2011/05/03/jquery-16-released/

是什麼這種新格式的區別:

$(".elements").fadeOut(); 

$.when($(".elements")).done(function(elements) { 
    // all elements faded out 
}); 

和老:

$(".elements").fadeOut(function() { /* all elements faded out */}); 
+6

沒有承諾,但我可能會回調。 :] – pixelbobby 2011-05-03 19:36:30

回答

5

正如乍得所說,$ .when允許你傳遞一堆回調,並且一旦所有回調都完成了,完成就會啓動。

http://vimeo.com/22687950是關於延遲的視頻,約15分鐘$ .when()被引入。約20分鐘,你會看到這個代碼:

var $balls = $(".bounceDemo"), 
     a = $balls.eq(0).drop(500), 
     b = $balls.eq(1).drop(2000), 
     c = $balls.eq(2).drop(4000); 
    $.when(a,b,c) 
     .done(function(){ 
      //do something 
     }); 
0

,我知道的唯一的區別是$。當( ).done()語法允許多個回調函數。傳遞迴調函數的許多「舊」方法需要1個函數對象。

在你的例子中,我可能有5個不同的函數在.done()上調用,而不是在動畫完成時調用一個回調函數。您甚至可以使用$ .when()。done()語法(deferred.done())傳遞一組函數對象。

0

新格式使用deferred objects。它們最初是作爲傳統AJAX回調的更靈活的替代品而推出的,因爲它們提供了對回調鏈和解決方案的更高級控制。

延遲對象已經證明非常有用,許多人想要使用它們將動畫鏈接到他們的AJAX應用程序邏輯中。從animate()回撥promise到目前爲possible but awkward。 jQuery 1.6現在支持它。

相關問題