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 */});
4

3 回答 3

5

正如乍得所说, $.when 允许你传入一堆回调,一旦它们都完成,done 就会触发。

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
      });
于 2011-05-05T14:58:06.263 回答
0

我知道的唯一区别是 $.when().done() 语法允许多个回调函数。而许多传递回调函数的“旧”方法需要 1 个函数对象。

在您的示例中,我可以在 .done() 上调用 5 个不同的函数,而不仅仅是在动画完成时调用一个回调。您甚至可以使用 $.when().done() 语法(deferred.done())传入一个函数对象数组。

于 2011-05-03T19:36:09.120 回答
0

新格式使用延迟对象。它们最初是作为传统 AJAX 回调的更灵活替代方案引入的,因为它们提供了对回调链接和解析的更高级别的控制。

延迟对象已被证明足够有用,以至于许多人希望使用它们将动画链接到他们的 AJAX 应用程序逻辑中。从电话中返回承诺是可能的,但到目前为止很尴尬。jQuery 1.6 现在支持它开箱即用。animate()

于 2011-05-03T19:51:24.320 回答