小编典典

如何停止/重写Jquery超时功能?

ajax

我有一个小的jquery片段,该页面在屏幕顶部显示通知消息,以响应页面上的用户操作。该通知通常在Ajax操作之后显示,其中包含动态内容。

例如:

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

该通知运行良好,除非用户连续快速执行两个或多个操作,否则超时功能将使自己感到困惑,并且第二条消息似乎在之前的3000毫秒之内。

如果执行新操作,是否有办法“杀死”先前的通知。我对动作/选择器没有问题,只是TimeOut函数....要么停止它,要么以某种方式覆盖它。还是有更好的选择让消息在消失前在屏幕上停留几秒钟?

谢谢。


阅读 317

收藏
2020-07-26

共1个答案

小编典典

首先,存储该setTimeout函数的返回值:

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

然后,当您准备取消超时…时,只需clearTimeout使用上次调用中的存储值进行调用setTimeout

// Then clearn the timeout
clearTimeout(timeout);
2020-07-26