2

私は次のjQueryスクリプトを持っています:

function fctSaveSuccess(data) {
    fctHideLoadingDlg();
    alert('continue...');
    ...
}

function fctHideLoadingDlg(disableBtn) {
    $("#loading").fadeTo(5000, 0.5, function () {
        $("#loading").dialog('destroy').remove();
    });
}

私が達成したいのは、ロードdiv(待機用のポップアップの一種)がゆっくりと消えるようにすることです。しかし、fctHideLoadingDlgが以下のコードと呼ばれると、5000のフェードを設定した場合でも実行され続けるため、機能しません...

どうすればこれを防ぐことができますか?

ありがとう。

4

1 に答える 1

0

それはごく普通のことです。はを呼び出した直後に戻るため、の実行はfctSaveSuccessブロックされません。完了時に実行されるコールバックが渡されますが、それはブロックしません。fctHideLoadingDlgfadeTofadeTo

コードで同じコールバック ルートを使用できます。関数は Javascript のオブジェクトであるため、パラメーターとして簡単に渡すこともできます。

function fctSaveSuccess(data) { 
    var afterHide = function () {
        alert('continue...'); 
        /* rest of your code */
    };
    fctHideLoadingDlg(afterHide); 
} 

function fctHideLoadingDlg(callback, disableBtn) { 
    $("#loading").fadeOut(5000, function () { 
        callback();
        $("#loading").dialog('destroy').remove(); 
    }); 
}

jsFiddle デモ

于 2012-05-23T07:43:17.743 に答える