JQuery TimeOut 関数を停止/オーバーライドするにはどうすればいいですか? 質問する

JQuery TimeOut 関数を停止/オーバーライドするにはどうすればいいですか? 質問する

ページ上のユーザー アクションに応じて画面上部に通知メッセージを表示する小さな jQuery スニペットがあります。通知は、内部に動的なコンテンツを含む Ajax アクションの後に表示されることがよくあります。

例えば:

$("#mini-txt").html("Thank you!");
$("#mini").fadeIn("fast");
setTimeout(function() {$("#mini").animate({height: "hide", opacity: "hide"}, "medium");}, 3000);

通知は正常に機能しますが、ユーザーが 2 つ以上のアクションを連続してすばやく実行した場合は、TimeOut 関数が混乱し、2 番目のメッセージが前の 3000 ミリ秒以内に表示されるようになります。

新しいアクションが実行された場合に、以前の通知を「強制終了」する方法はありますか。アクション/セレクターに問題はありませんが、TimeOut 関数に問題があります。これを停止するか、何らかの方法で上書きします。または、メッセージを画面に数秒間表示してから消えるようにする、よりよい方法があるでしょうか。

ありがとう。

ベストアンサー1

まず、関数の戻り値を保存しますsetTimeout

// Set the timeout
var timeout = setTimeout(function()
    {
        // Your function here
    }, 2000);

その後、タイムアウトを終了する準備ができたら、clearTimeout前回の呼び出しで保存した値を使用して を呼び出すだけですsetTimeout

// Then clearn the timeout
clearTimeout(timeout);

おすすめ記事