Ajax 呼び出しの場合、特定の順序で呼び出す必要があるさまざまな要素の遷移がいくつかあります。jQuery Deferred について読んだとき、これは私が探していたものだと思いましたが、動作させることができないようです。
アーカイブしたいものを理解するために、単純な jsfiddle を作成しました: http://jsfiddle.net/pe5Bb/1/
私が推測する問題は、css3 トランジションです。すべての機能が最初から実行されます。しかし、console.log を transitionend コールバックに配置すると、機能しているように見えますが、関数はまだ実行されています。
function box2() {
var deferred = $.Deferred();
if ( $('#box2').hasClass('active') ) {
$('#box2').css({opacity:0}).bind(transitionend, function(){
console.log("css3 done");
deferred.resolve();
$('#box2').unbind(transitionend);
});
} else {
deferred.resolve();
}
return deferred.promise();
}
私が達成したいのは、複数の関数 (新しいコンテンツへの遷移の状態を含む) を作成できることと、それらをどの順序で呼び出す必要があるかを伝えることができることです。この例では、クラスの追加/削除によって呼び出されることがある css3 トランジションを操作します。このシナリオで deferred を使用するのが正しくない場合は、それを聞いてみたいと思います。