3

AJAX呼び出しが完了した後、いくつかのものを実行しようとしています:

$.ajax({
    url: url,
    success: //do stuff
}).done(function (){
    $('#listings').fadeIn(800).done(function(){
        $('#loading').fadeOut(800);
    });
});

$('#loading').fadeOut(800);これは、 が終了したときに開始する必要がある の最後の部分を実行しません$('#listings').fadeIn(800)

4

2 に答える 2

6

fadeIn()実際には promise を返すような関数ではありませんが、使用できるコールバック関数があります。

$.ajax({
    url: url,
}).done(function (){
    $('#listings').fadeIn(800, function(){
        $('#loading').fadeOut(800);
    });
});
于 2012-12-21T19:09:40.310 に答える
6

アニメーションから promise オブジェクトを取得するには、 を使用します.promise

$.ajax({
    url: url,
    success: handler
}).done(function (){
    $('#listings').fadeIn(800).promise().done(function(){
        $('#loading').fadeOut(800);
    });
});

この特定のケースでは、アニメーションではなく、コールバックを使用する方が理にかなっています.promise.doneを使用する利点は、.promise要素ごとに 1 つのコールバックではなく、選択したすべての要素に対して 1 つのコールバックになることです。アニメーション化する要素は 1 つだけなので、コールバックを使用するのが最善の方法です。(アデネオの答え)

.promise を使用することには他にも利点がありますが、それらは必要ないようです。($.when例)

于 2012-12-21T19:12:20.070 に答える