jQuery 动画队列
我有一条错误消息,显示值何时错误。并使用 3 秒的 setTimeout 消息淡出。问题是,当消息第一次显示并等待 3 秒,此时用户再次单击“提交”,事件会再次触发。第一条消息消失,第二条消息也消失。 这是显示消息的代码:
function showMSG(txt,type){
$('.msg .text').html(txt);
$('.msg').fadeIn(300);
$('.msg img').attr({'src':'images/'+(type?'msgDone.jpg':'msgError.jpg')});
setTimeout(function(){$('.msg').fadeOut(300);},300);
}
请帮忙 提前致谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要将超时分配给变量,并确保在设置新超时之前尚未设置超时。
You need to assign the timeout to a variable and make sure a timeout is not already set before setting a new one.
编辑澄清的问题:在这种情况下,您需要处理自己的超时并停止旧动画(而不是使用
.delay()
,您无法控制),setTimeout()
返回一个计时器 ID,您可以将其设置为 3 秒(3000ms 而不是 300ms!),当触发下一条消息时,停止该计时器带有clearTimeout()
的计时器。另外,您还需要将其与
.stop()
结合起来清除淡入淡出队列,如下所示:Edit for clarified question: In this case you'll need to handle your own timeout and stop the old animation (rather than using
.delay()
that you can't control),setTimeout()
returns a timer ID that you can set for 3 seconds (3000ms not 300ms!) and when the next message is triggered, stop the timer withclearTimeout()
.Also, you'll want to combine this with
.stop()
to clear the fade queue, like this: