2016-08-10 8 views
0
(function animation() { 
    var options = { 
     duration: 800, 
     easing: 'linear' 
    }; 

    $('.square-big') 
     .find('.square-small') 
     .animate({ 
      left: 280, 
      top: 280 
     }, 
     options 
    ) 
     .animate({ 
      left: 0, 
     }, 
     options 
    ) 
     .animate({ 
      left: 280, 
      top: 0, 
     }, 
     options 
    ) 
     .animate({ 
      left: 0, 
     }, 
     $.extend(true, {}, options, { 
      complete: function() { 
       animation(); 
      } 
     }) 
    ); 
})(); 

行い、それが拡張言うに二つ以上のオブジェクトの内容をマージ)($伸ばすかを把握didntの最初のobject.adding trueは、再帰的な拡張を行います。しかし、私はちょうど上記のケースでmegredを把握できませんでした。私はここで運命にある(私はちょうどjqueryを開始しています)iはjqueryのアニメーション機能について学習し、次のコードに出くわした、実際に私はjQueryのドキュメントを経て

+0

どこから来たのですか? –

答えて

0

$.extend()は、あなたが言うように。あなたの場合、optionscomplete関数を含むオブジェクトを空のオブジェクトにマージして、元のオブジェクトを$.extend()の前の状態のままにします。ステップへ

分割これを:

  1. 2番目のパラメータで定義されたオブジェクトは、我々の出発点は

    {} 
    
  2. ある次のオブジェクト、optionsは、次いで、最初のものにマージされ、その

    { 
        duration: 800, 
        easing: 'linear' 
    } 
    
  3. 次のoあなたがcomplete機能を含むように定義されているbjectは、そのオブジェクトにマージされます。

    { 
        duration: 800, 
        easing: 'linear', 
        complete: function() { 
         animation(); 
        } 
    } 
    
  4. 結果は、その後$.extend()から返されると、最終的なアニメーションに渡されます。

関連する問題