我正在使用如下所示的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);
});
};
答案 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)})});