ページ上のユーザー アクションに応じて画面上部に通知メッセージを表示する小さな 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);