javascript - 如何停止/覆盖 Jquery TimeOut 函数?

标签 javascript jquery ajax timeout notifications

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

例如:

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

通知效果很好,除非用户快速连续执行两个或更多操作,在这种情况下,TimeOut 函数会混淆自身,第二条消息似乎在前 3000 毫秒内出现。

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

谢谢。

最佳答案

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

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

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

// Then clearn the timeout
clearTimeout(timeout);

关于javascript - 如何停止/覆盖 Jquery TimeOut 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578628/

相关文章:

javascript - 获取 href 并将其放在 src 上

javascript - 检查div内容是否滚动到页面底部

javascript - 值未传递到 process.php

javascript - 当用户单击 Safari 扩展的工具栏命令时获取键盘修饰符

c# - window.external有什么用?

javascript - 使用 typescript 导入外部javascript的最佳方法

Jquery slider 工作正常,但为什么在尝试使其居中时它会中断?

javascript - jQuery 中的事件相互依赖

jquery - 对Grails Controller的JQuery Ajax请求不起作用

javascript - 为什么切片不起作用?