我编写了一个 JQuery 程序,只需按一下按钮,它就会运行十几个 setTimeout 以及一些动画。该程序在现有的 div 上运行,更改它们的 HTML(使用 id 选择器),淡入,淡出等......
整个过程最多可能需要 15 秒。问题是,如果在该时间范围内再次按下按钮,那么淡入和淡出开始相互堆叠并且看起来很奇怪。
有什么我可以使用的东西,如果再次按下按钮,那么所有正在进行的 JQuery 内容都会停止并被清除?我尝试过使用 clearTimeout,这似乎不起作用。
我编写了一个 JQuery 程序,只需按一下按钮,它就会运行十几个 setTimeout 以及一些动画。该程序在现有的 div 上运行,更改它们的 HTML(使用 id 选择器),淡入,淡出等......
整个过程最多可能需要 15 秒。问题是,如果在该时间范围内再次按下按钮,那么淡入和淡出开始相互堆叠并且看起来很奇怪。
有什么我可以使用的东西,如果再次按下按钮,那么所有正在进行的 JQuery 内容都会停止并被清除?我尝试过使用 clearTimeout,这似乎不起作用。
您可以使用.stop()
或.clearQueue()
。
当调用 .clearQueue() 方法时,队列中所有尚未执行的函数都会从队列中移除。当不带参数使用时,.clearQueue() 会从标准效果队列 fx 中删除剩余的函数。这种方式类似于.stop(true)。然而,虽然.stop() 方法仅用于动画,但 .clearQueue() 也可用于删除已使用 .queue() 方法添加到通用 jQuery 队列的任何函数。
您还可以阻止按钮执行任何操作,直到计时器完成。您可以放置一个布尔变量,在第一次单击后获取值false
并且计时器完成时,将此变量转回true
并在您单击按钮时检查它。