2012-01-02 102 views

回答

1
var c =0; 

$(function reload(){ 

    $.ajax({ 
    . 
    . 
    . 

if(c == 0)  
    window.setTimeout(reload, 3000); 

    }); 

}); 




$('#stop').click(function){ 

    c =1; 

}); 
3

要清除超时,首先需要由setTimeout函数的返回值赋值给一个变量

var timer = setTimeout(...) 

然后使用clearTimeout来清除定时器;

clearTimeout(timer); 

你可以查看https://developer.mozilla.org/en/DOM/window.clearTimeout的详细解释。

编辑:在您的情况,可以选择使用的setInterval和clearInterval替代,或者用一个布尔标志指示是否重新加载与否。

var toReload = true; 

$(function reload(){ 
    $.ajax({ 
    . 
    . 
    . 
    if (toReload) { 
     window.setTimeout(reload, 3000); 
    } 
    }); 
}); 

$('#stop').click(function){ 
    toReload = false; 
}); 
+0

哇,这是gooe的主意!谢谢 – blankammo 2012-01-02 05:33:32

0

如果来源是你不能修改,那么你就必须做一些哈克,像重写reload()功能:

$('#stop').click(function){ 
    window.reload = function() {}; 
}); 

如果失败,因为reload()window下,那么实际上你可以重写window.setTimeout(),但我们强烈不推荐。