2011-09-04 3 views
0

5 분마다 페이지를 자동 새로 고치는 jquery 플러그인이 있습니다.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"로 무엇을하고 있는지 알지 못하지만 페이지를 새로 고침 (예 : 새 페이지로드)하면 현재 자바 스크립트가 중지되고 새 페이지에서 다시 초기화됩니다. 덕분에 – jfriend00

답변

3

원래 호출에서 반환 된 값을 setInterval로 기억하면 타이머를 중지하기 위해 clearInterval에 전달할 수 있습니다. 당신이 더 많은 컨트롤을 할 때

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

때때로, 그것은 setInterval()를 사용하지 않는,하지만 setTimeout()을 사용하고 당신이 그것을 중지 할 때까지 반복 해 각각의 연속 타이머 setTimeout() 전화 쉽다. 이 기법을 사용하면 원할 경우 타이머 간격을 쉽게 변경할 수도 있습니다.

+0

! 하지만 한가지 더 질문이 있습니다 .. 어떻게 함수 x에서 호출 할 계획이기 때문에 다른 함수에서 clearInterval을 호출합니까? 여기에 다른 파일, 미안 초보자가 있습니다 ... – maru

+0

같은 방법으로, jfriend00처럼 var에 대한 간격을 지정하고, 지우기가 처리 될 함수가 var에 액세스 할 수 있는지 확인하십시오. – Loktar