0

5分ごとにページを自動更新するjqueryプラグインがあります。

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

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

問題は、特定の関数が実行されたときにタイマーをリセットしたいということです。clearIntervalについて読んだことがありますが、ここでそれを実装する方法がわかりません。より具体的には、関数 x が実行されるたびに間隔をクリアする必要があります。

フォローアップの質問:

プラグインの現在の構造を考慮して、別のファイルの関数で clearInterval を呼び出すにはどうすればよいですか? ここで申し訳ありません。ありがとう!

どんな助けでも大歓迎です。前もって感謝します!

アップデート:

私のプラグインは今このように見えます

(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 を壊し、タイマーがリセットされた後にページを更新しなくなることです。ここで何か不足していますか?

4

1 に答える 1

3

setInterval への元の呼び出しからの戻り値を覚えておけば、それを clearInterval に渡してタイマーを停止できます。

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

より詳細な制御が必要な場合はsetInterval()、 を使用せずに を使用して、連続する各タイマーを停止するまでsetTimeout()繰り返し呼び出す方が簡単な場合があります。setTimeout()この手法により、必要に応じてタイマー間隔を簡単に変更できます。

于 2011-09-04T01:48:40.000 に答える