Javascript 如何停止/覆盖Jquery超时函数?

Javascript 如何停止/覆盖Jquery超时函数?,javascript,jquery,ajax,timeout,notifications,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); 通知工作正常,除非用户连续快速执行两个或多

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

例如:

$("#mini-txt").html("Thank you!");
$("#mini").fadeIn("fast");
setTimeout(function() {$("#mini").animate({height: "hide", opacity: "hide"}, "medium");}, 3000);
通知工作正常,除非用户连续快速执行两个或多个操作,在这种情况下,超时功能会混淆自身,第二条消息出现在前3000毫秒内

如果执行了新操作,是否有方法“终止”以前的通知。我对操作/选择器没有问题,只是超时功能。。。。要么停止它,要么以某种方式覆盖它。或者,也许有更好的方法让信息在消失前在屏幕上停留几秒钟

谢谢。

您可以使用

停止当前正在运行的动画 在匹配元素上


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

// Set the timeout
var timeout = setTimeout(function()
    {
        // Your function here
    }, 2000);
然后,当您准备结束超时时……您只需调用
clearTimeout
,并使用上一次调用
setTimeout
中的存储值即可

// Then clearn the timeout
clearTimeout(timeout);

jQuery 1.4有一个内置的方法来处理动画的延迟,您可以这样做:

$("#mini-txt").html("Thank you!");
$("#mini").fadeIn("fast").delay(3000).animate({height: "hide", opacity: "hide"}, "medium");
然后,当您要清理动画队列时,可以执行以下操作:

$("#mini").stop(true);

这将在延迟500毫秒的情况下清除函数运行后的超时

var timeout = setTimeout(function(){

/* YOUR FUNCTION */

}, 500, function(){
   clearTimeout(timeout);
});

清除后是否会执行超时功能?