2012-01-02 77 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(),但我們強烈不推薦。

相關問題