jQuery延迟函数中断

时间:2012-06-08 07:39:39

标签: jquery delay interrupt

我在jQuery中有一个淡入淡出的弹出窗口,如果没有被用户解雇,它将在10秒内淡出。

我有代码:

$modalElement.fadeIn(1000).delay(10000).fadeOut(1000);

这适用于淡入,延迟和淡出 - 但表单上的'close'按钮在超时后才起作用!

我需要'close'按钮来中断delay,以便用户可以阅读弹出窗口并自行关闭它,比如说,5秒钟 - 然后如果他们自己没有关闭它,然后它将在10秒延迟后自动关闭。

任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:7)

您可以使用.clearQueue()方法。

关闭处理程序中,您可以执行以下操作:

$modalEleement.clearQueue();

默认情况下,.delay().clearQueue()都在fx队列上运行,但您可以传递自定义队列名称。

答案 1 :(得分:0)

只需在关闭按钮上添加一个带队列的点击事件。

例如:

$modalElement.fadeIn(1000).delay(10000).fadeOut(1000);

$modalElement.find('a.close').click(function(){
  // If you want fadeout being triggerd
  $modalElement.dequeue() 
  // If you just want to delete the box without the fadeOut
  $modalElement.remove() 
});