我正在尝试制作一条自定义弹出消息,出现该消息,向用户显示5秒钟,然后淡出。如果使用多次触发事件,并且超时已在运行,则消息会快速消失,但效果很好。

到目前为止我的功能...

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

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

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

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

非常感谢

最佳答案

试试这个:

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时都声明它。

关于javascript - JQuery 弹出消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14155059/

10-12 02:31