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

Chad が言ったように、$.when を使用すると一連のコールバックを渡すことができ、それらがすべて完了すると、done が起動します。

http://vimeo.com/22687950は deferreds に関するビデオで、約 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 つの関数オブジェクトを取ります。

あなたの例では、アニメーションの完了時に1つのコールバックだけでなく、 .done() で呼び出される5つの異なる関数を持つことができます。$.when().done() 構文 ( deferred.done() ) を使用して関数オブジェクトの配列を渡すこともできます。

于 2011-05-03T19:36:09.120 に答える
0

新しい形式では、遅延オブジェクトが使用されます。従来の AJAX コールバックのより柔軟な代替手段として最初に導入されました。これは、コールバックの連鎖と解決に関するより高度な制御を提供するためです。

Defered オブジェクトの有用性は十分に証明されており、多くの人が Defered オブジェクトを使用して、アニメーションを AJAX アプリケーション ロジックに連鎖させたいと考えていました。電話から約束を返すことは可能でしたが、これまでのところ厄介でした。jQuery 1.6 では、すぐに使用できるようになりました。animate()

于 2011-05-03T19:51:24.320 に答える