3

JavaScriptインターバルを利用するjQueryプラグインを開発中です。しかし、プラグインが引数runningfalseとして再度呼び出すと、その特定のDOM要素で呼び出された前の間隔をクリアします。これが可能であるどのように後でクリアするためにsetIntervalを保存する

(function ($) { 
    $.fn.examplePlugin = function (running) { 
     return this.each(function() { 
      if (running === false) { 
       // Clear the previous interval assigned to this DOM element 
      } else { 
       setInterval(function() { 
        // Interval code 
       }, 50); 
      } 

      return this; 
     }); 
    }; 
})(jQuery); 

:ここ

は、いくつかの短縮符号のですか?インターバルを格納するためにグローバル変数を使うことを考えましたが、実際にはそうしたくありません。また、特定のDOM要素に区間を割り当てる方法もわかりません。

答えて

4

DOM要素ごとの間隔を保存する場合は、.data()を使用することをお勧めします。具体的には、特定のDOM要素のデータを設定します。

var saved = $(this).data("__examplePlugin_interval"); 

if (saved) { // I think you mean when it *is* running 
    clearInterval(saved); 
    $(this).removeData("__examplePlugin_interval"); 
} else { 
    var interval = setInterval(function() { 
     // Interval code 
    }, 50); 

    // choose a name that won't be accidentally overwritten by others 
    $(this).data("__examplePlugin_interval", interval); 
} 
+0

ありがとうございました。それは上のスポットです! –

関連する問題