1

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

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

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

4

1 回答 1

2

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

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

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

于 2012-09-01T23:12:08.670 回答