我编写了一个JQuery程序,只需按一下按钮,它就会运行十几个setTimeout以及一些动画。该程序在现有的div上运行,更改其HTML(使用id选择器),淡入,淡出等。

整个过程最多可能需要15秒。问题是,如果在该时间段内再次按下该按钮,则淡入淡出开始彼此叠加,看起来很奇怪。

有什么我可以使用的东西,如果再次按下该按钮,则所有进行中的JQuery内容将停止并清除?我尝试使用clearTimeout,这似乎不起作用。

最佳答案

您可以使用.stop().clearQueue()


  调用.clearQueue()方法时,队列上所有尚未执行的功能都将从队列中删除。如果不带参数使用.clearQueue(),则将从标准效果队列fx中删除其余功能。这样,它类似于.stop(true)。但是,虽然.stop()方法仅用于动画,但.clearQueue()也可以用于删除通过.queue()方法添加到通用jQuery队列中的任何函数。


您还可以阻止按钮在计时器结束之前执行任何操作。
您可以放置​​一个布尔变量,该变量在第一次单击后获得false的值,并且在计时器结束后,将其变为true并在单击按钮时进行检查。

08-18 09:50