2
$(function(){

    var dfd = $.when( $('div').eq(0).fadeOut(1000) );

    // ADD NOW NEW FUNCTION DO dfd

    dfd.then(function(){
        alert();
    });

});

dfd 遅延オブジェクトが実行されているが、まだ解決されていない場合、別の関数を追加することは可能ですか?

4

3 に答える 3

0

標準の jQuery メソッド チェーンでは、jQuery を返すことが期待.fadeOut()されますが、式では ...

$.when( $('div').eq(0).fadeOut(1000) )...;

... 内部の jQuery マジックによって、 に渡されるパラメーターは、実際には のキュー$.when()から派生した promiseです。明確にするために、次のように記述します...fx$('div').eq(0)

$.when( $('div').eq(0).fadeOut(1000).promise('fx') )...;

実際には$.when()、2 つ以上の promise に応答して何かを実行する必要がない限り、使用する理由はありません。したがって、次のように書くことができます...

var promise = $('div').eq(0).fadeOut(1000).promise();

...さまざまな方法で任意の数の「完了」コールバックをアタッチできるプロミスを提供します。

可能なもののサンプルを次に示します。

var promise = $('div').eq(0).fadeOut(1000).promise();

promise.then(function() {
    alert('done 1');
});

promise.done(function() {
    alert('done 2');
});

promise.then(function() {
    alert('done 3');
}).always(function() {
    alert('done 4');
});

デモ

于 2012-12-27T22:19:09.787 に答える
-1

.promise()を使用できます:

$('div').eq(0).promise().done(function(){
    alert();
});
于 2012-12-27T17:20:17.987 に答える