7

カスタム ポップアップ メッセージを作成しようとしています。このメッセージは表示され、ユーザーに 5 秒間表示されてからフェードアウトします。これは正常に機能しますが、使用がイベントを複数回トリガーし、タイムアウトがすでに実行されている場合、メッセージはすぐに消えます。

これまでの私の機能...

function showMessage(message) {
    $(".messageText").text(message);

    $(".message").fadeIn("slow");    

    closeBox = function(){
        $(".message").fadeOut("slow");    
    }

    clearInterval(closeBox);
    setInterval(closeBox, 5000);
}

どうもありがとう

4

2 に答える 2

8

これを試して:

var interval;

function showMessage(message) {
    $(".messageText").text(message);

    $(".message").fadeIn("slow");
    if(interval){ // If a interval is set.
        clearInterval(interval);
    }
    interval = setInterval(closeBox, 5000);
}

function closeBox(){
    $(".message").fadeOut("slow");    
}

setInterval戻り値を変数に割り当てる必要があります。このハンドルを使用して、間隔を で終了できますclearinterval。(関数で間隔をクリアすることはできません。間隔ハンドルによってのみ)

また、closeBox関数から関数を取り出しました。呼び出されるshowMessageたびに宣言する必要はありません。showMessage

于 2013-01-04T10:16:40.307 に答える
4

jQuery 遅延の使用についてはどうですか?

サンプル:

$("#container").fadeIn().delay(amoutOfTimeInMiliseconds).fadeOut();

あなたの機能:

function showMessage(message) {
    $(".messageText").text(message);

    $(".message").fadeIn("slow").delay(5000).fadeOut("slow");    
}

それはうまくいくはずです...よろしく。

于 2013-01-04T10:17:35.797 に答える