2011-05-03 33 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现在支持它。

相关问题