2011-09-04 114 views
0

我有一個jQuery插件,autofreshes頁面每隔5分鐘。jQuery中使用設置間隔時,如何清除間隔?

(function($) { 
    $.fn.refreshPage = function() { 

    setInterval(function() { 
     function x(); 
    }, 300); 
    }; 
})(jQuery); 

但問題是,我希望它當某個函數運行,我讀過有關clearInterval復位定時器,但我不知道如何實現,在這裏。更具體地說,我希望函數x在每次運行時清除間隔。

後續問題:

如何在給我的插件目前結構的另一個文件調用clearInterval上的功能?對不起在這裏。謝謝!

任何幫助,將不勝感激。提前致謝!

UPDATE:

我的插件,現在看起來是這樣

(function($) { 
    var refresh_timer; 
    $.fn.refreshPage = function() { 

    refresh_timer = setInterval(function() { 
     function x(); 
    }, 300); 
    }; 
    $.fn.reFreshPage.resetTimer = function() { 
    clearInterval(refresh_timer); 
})(jQuery); 

我呼籲:

$.fn.reFreshPage.resetTimer 

重置間隔,但問題是,它打破了的setInterval並且在定時器重置後不再刷新頁面。我在這裏錯過了什麼嗎?

+0

clearInterval不會復位間隔定時器 - 它停止它完全。如果你想「重啓」它,你將不得不清除當前的時間間隔,然後開始一個新的時間間隔。另外,我不知道你在用「reFreshPage」做什麼,但是如果你真的刷新頁面(例如加載一個新頁面),那麼當前的所有JavaScript停止並被新頁面重新初始化。 – jfriend00

回答

3

你一定要記住從原來的呼叫setInterval的返回值,然後可以傳遞給clearInterval以停止計時器。

var timer = setInterval(...); 
clearInterval(timer); 

有時候,當你想要更多的控制,很容易不使用setInterval(),而是利用setTimeout(),只是反覆調用setTimeout()每個連續的計時器,直到你想讓它停下來。如果需要,該技術還可以更容易地改變定時器間隔。

+0

謝謝!但一個更question..how做我通過調用clearInterval上的另一個功能,因爲我打算把它的功能X,W/C在另一個文件中,這裏對不起新手.. – maru

+0

同樣的方式,只要確保你的分配間隔像jfriend00一個變種一樣,並確保無功就是將處理結算功能訪問。 – Loktar