如何在jquery或javascript上停止函数重载(window.reload)?

时间:2012-01-02 05:10:40

标签: javascript jquery

来源

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

此功能每3秒重新加载一次ajax页面。

我想制作停止按钮(#stop)。

$('#stop').click(function){
   //STOP FUNCTION
});

请让我知道怎么做?

3 个答案:

答案 0 :(得分: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;
});

答案 1 :(得分:1)

var c =0;

$(function reload(){

  $.ajax({
    .
    .
    .

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

  });

});




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

  c =1;

});

答案 2 :(得分:0)

如果源代码是您无法修改的内容,那么您将不得不做一些hacky,比如覆盖reload()函数:

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

如果此操作失败,因为reload()不在window下,那么您实际上可以覆盖window.setTimeout(),但强烈建议不要这样做。