我预计这已经有一百万个答案了。我不知道用来表达这个问题的术语。但...
看看这个:http://jsfiddle.net/QD3UK/8/
$('body').on('click', '.testDiv', function(){
console.log($(this))
repeatTest(1)
})
function repeatTest(n){
window.setTimeout(function(){
$('.result').append(n+" hi<br />")
repeatTest(n);
}, 3000);
n++
}
我希望循环函数在再次单击testDiv div时再次启动 - 因此只有一个循环迭代 - 它从哪个数字(n)开始并不重要。
请帮帮忙? 感谢
答案 0 :(得分:5)
您可clearTimeout
取消现有的setTimeout
。如下所示:
var _handle;
$('body').on('click', '.testDiv', function(){
clearTimeout(_handle);
console.log($(this))
repeatTest(1)
});
function repeatTest(n){
_handle = window.setTimeout(function(){
$('.result').append(n+" hi<br />")
repeatTest(n);
}, 3000);
n++;
}