如何清除正在进行的所有JQuery

时间:2012-09-01 23:06:09

标签: javascript jquery

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

整个过程最多可能需要15秒。问题是,如果在该时间范围内再次按下该按钮,那么淡入淡出就会开始堆叠在彼此之上并且看起来很奇怪。

是否有一些我可以使用的东西,以便如果再次按下该按钮,那么正在进行的所有JQuery内容都会停止并被清除掉?我尝试过使用clearTimeout,这似乎不起作用。

1 个答案:

答案 0 :(得分:2)

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

  

当调用.clearQueue()方法时,队列中的所有尚未执行的函数都将被删除。在没有参数的情况下使用时,.clearQueue()从标准效果队列fx中删除剩余的函数。这种方式类似于.stop(true)。但是,虽然 .stop()方法仅用于动画,但 .clearQueue()也可用于删除已添加到通用jQuery队列的任何函数.queue()方法。

在计时器完成之前,您还可以阻止按钮执行任何操作。 您可以放置​​一个布尔变量,在第一次单击获取值false后,当计时器完成时,将此变量返回到true,并在您单击按钮时检查它。