3

JavaScript 간격을 사용하는 jQuery 플러그인에서 작업하고 있습니다. 그러나 running과 같이 false으로 다시 플러그인을 호출하면 특정 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

대단히 감사합니다. 그 자리에있어! –