我有一个循环自己的简单函数。我想杀死它然后根据用户操作重新执行它。不确定最好的方法是什么。
这就是我所拥有的:
function loopor(){
$slider.next();
setTimeout(loopor, 3000);
}
这就是我需要做的事情:
$('#thing').click(function(event){
event.preventDefault();
var thing = $(this);
/* help here */
magicKillLooporFunction();
/* end help*/
thing.animate({
height: '100%'
}, function({
loopor();
});
});
答案 0 :(得分:4)
var myTimeout;
function loopor(){
clearTimeout(myTimeout); //Add this so multiple clicks don't create multiple timeouts
$slider.next();
myTimeout = setTimeout(loopor, 3000);
}
然后在其他代码中
$('#thing').click(function(event){
event.preventDefault();
var thing = $(this);
clearTimeout(mytimeout);
thing.animate({
height: '100%'
}, function({
loopor();
});
});
答案 1 :(得分:1)
这是最简单的解决方案:
(function($) {
var $slider, //Assign value
timeout;
function loopor() {
$slider.next();
timeout = setTimeout(loopor, 3000);
}
$('#thing').click(function(event){
event.preventDefault();
var thing = $(this);
/* help here */
clearTimeout(timeout);
/* end help*/
thing.animate({
height: '100%'
}, function({
loopor();
});
});
})(jQuery);
答案 2 :(得分:0)
添加布尔值:
if(keeprunning) setTimeout(loopor, 3000);