2011-01-10 20 views
2

jQueryのアニメーション関数を別のものに置き換えることができるコードを記述したいが、それでも完了時に2次関数を呼び出すことができる。連鎖を許可するjQuery関数の作成

現時点では、このようなコードをたくさん書いています。

if (cssTransitions) { 
    $("#content_box").css("height",0); 

    window.setTimeout(function() { 
     secondFunction(); 
    }, 600); 
} else { 
    $("#content_box").animate({ 
     height:0 
    }, 600, function() {     
     secondFunction(); 
    }); 
} 

私はむしろ、このようになります関数を記述したい:私はこのように使用することができ

function slideUpContent(object) { 
    if (cssTransitions) { 
     object.css("height",0); 
     // Not sure how I get a callback here 
    } else { 
     $("#content_box").animate({ 
      height:0 
     }, 600, function() { 
     }); 
    } 
} 

slideUpContent("#content_box", function(){ 
    secondFunction(); 
}); 

しかし、私は取得するかどうかはわかりません私が必要とする機能、つまり私のものが完成したら別の機能を実行する方法です。

誰かが私のむしろ脳を助けることができますか?

+0

はjQueryのキュー機能を見てみましょう:http://api.jquery.com/queue/ –

答えて

3

あなたが探している機能は、コールバックと呼ばれます。

実装が簡単です。匿名関数(または他の関数)をパラメータとして渡し、括弧callback()を付加して渡された変数を呼び出してください(最初に有効な関数であるかどうかを確認することは明らかです)。通常チェーン

function slideUpContent(object, callback) { 
    if (cssTransitions) { 
     object.css("height",0); 
     // Perform callback if set 
     if ($.isFunction(callback)) { 
      callback(); 
     } 
    } else { 
     $("#content_box").animate({ 
      height:0 
     }, 600, callback); 
    } 
} 
+0

それは本当に明らかです今私はそれを参照してください!ありがとう! –

+0

実際には、1つの質問 - コールバックが指定されていない場合でもこれは機能しますか? –

+1

@Rich Bradshaw、する必要があります。 'animate()'に渡すコールバックの使用は、デフォルトとして必要なものに依存しています。 – Orbling

1

はそうあなたが例えば

$("selector").function1().function2(); 

を行うことができ、これを返す意味し、あなただけの、私が持っていた

function1("parameter", function2); 
0

でそれを呼び出す

function1(param1, f) { 
    // do stuff 
    f(); 
} 

が必要最近、シーケンスオープニングアニメーションが作成されましたウェブサイトの場合私はこのウェブサイトが良い情報源であることを発見しました。あなたに役立つ部分は、「一連のアニメーションを作成する」です。

http://www.elated.com/articles/super-easy-animated-effects-with-jquery/

関連する問題