1

特定の機能が完了するまで、要素がアニメーション化されないようにしようとしています。問題は、関数がまだ実行されている間にアニメーションが開始されることです。そのため、アニメーションは、関数を無効にしたときのように滑らかで落ち着いているのではなく、非常にラグがあり、びくびくしています。

私のコードは次のようになります。

function editElement() {
    // Do a lot of calculations and edit what is inside #box (no Ajax)
}

$("#click").click(function() {
    editElement();
    $("#element").slideDown("slow");
});

slideDown関数が完了するまでアニメーションを強制的に待機させてから実行するにはどうすればよいですか?

私は他の質問で試しcallbacks$.Deferred提案しましたが、それらのほとんどは Ajax に向けられているようで、私にはうまくいきません。お時間をいただきありがとうございます!

4

1 に答える 1

0

slideDowneditElementJavaScript は「線形言語」であるため、常にそのコードの実行が終了した後に実行されます。唯一の例外は、AJAX やsetTimeout/などの非同期関数が内部にある場合setIntervalです。

1つの提案は、これを行うことができるということです:

function ediElement(..., callback){
    //codes here....
    //Make sure there is no asynchronous functions.

    callback();
}

$("#click").click(function() {
    editElement(function(){
        $("#element").slideDown("slow");
    });
});
于 2013-11-06T06:16:06.120 に答える