jQuery如何重新初始化延迟函数

时间:2009-07-02 12:45:12

标签: jquery

我正在使用如下所示的Jquery时间延迟推子,但需要根据代码中的事件重新初始化它,即将计时器敲回零。我该怎么做呢?我试过再次调用fader()。

function fader(){ 

$(ajdiv).delay(10000, function(){$(ajdiv).fadeOut()});

}
jQuery.fn.delay = function(time,func){ //run a delayed function

return this.each(function(){

    setTimeout(func,time);

});

};

2 个答案:

答案 0 :(得分:1)

您需要保存从setTimeout返回的timeoutID。您可以调用window.clearTimeout(timeoutID)来删除计时器并停止事件发生。在“重置”的情况下,你必须在之后创建一个新的。

mozilla documentation for setTimeout

查看this question,它(我认为)更优雅的解决方案,我认为你遇到了同样的问题。

答案 1 :(得分:1)

这是我使用的实际代码(它使一个新的元素从左边停留一段时间给我的自定义延迟函数,然后再次消失):

$element.next().next().hide().show('slide', {direction : 'left'}, 700, function () {$(this).delay(10000, function() {$element.next().next().hide('slide', {direction: 'left'}, 700)})});