私はそれがこれと同じくらい簡単だと思います:
(function($) {
$.fn.ajaxTransitionOut = function() {
return this.find('.animate').each(function() {
$(this).animate({
left: 500,
opacity: 0
}, 4000);
});
};
})(jQuery);
$.when($('#content').ajaxTransitionOut()).done(function() {
$('html').css('backgroundColor','#999');
});
フィドル-http://jsfiddle.net/hrm6w/8/
プロセスをよりよく観察するために、定数とターミナルアクションを変更したことがわかります。
なぜこれが機能するのか完全には理解していませんが、選択されたすべての要素の複合promiseは、プラグインによって返されるjQueryオブジェクトに暗黙的に含まれているようです(したがって.done()
、メソッドチェーンの下流で利用できるようになっています)。
これは、アニメーションを扱っており、promiseのデフォルトtype
が「fx」であるためにのみ機能すると思います(.promise()のドキュメントを参照してください)。
編集:
または、次のようにメソッドチェーンで.when()
明示的なpromiseを削除して生成することもできます。.promise()
$('#content').ajaxTransitionOut().promise().done(function() {
$('html').css('backgroundColor','#999');
});
プラグインは同じままです。