1

我预计已经有一百万个答案了,我不知道用什么术语来表达这个问题。但...

看看这个: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) 开始并不重要。

请帮忙?谢谢

4

1 回答 1

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++;
}
于 2013-09-13T19:08:29.130 回答