2009-07-02 4 views
2

아래와 같이 Jquery time delayed fader를 사용하고 있지만 코드의 이벤트를 기반으로 다시 초기화해야합니다 (예 : 타이머를 0으로 다시 고정). 어떻게해야합니까? 나는 방금 fader()를 다시 호출하려고 시도했다.jQuery 지연 함수를 다시 초기화하는 방법

function fader(){ 

$(ajdiv).delay(10000, function(){$(ajdiv).fadeOut()}); 

} 
jQuery.fn.delay = function(time,func){ //run a delayed function 

return this.each(function(){ 

    setTimeout(func,time); 

}); 

}; 

답변

1

setTimeout에서 반환 된 timeoutID를 저장해야합니다. window.clearTimeout (timeoutID)을 호출하여 타이머를 제거하고 이벤트 발생을 중지 할 수 있습니다. "재설정"의 경우 나중에 새 것을 작성해야합니다.

모질라 documentation for setTimeout.

체크 아웃 this question 너무, 내 생각에 더 우아한 솔루션을 가지고있어 같은 문제가 있다고 생각합니다.

+0

감사합니다! : D 이것도 다른 브라우저에서도 작동하는지 알고 있습니까? – user132192

+0

예, 모든 시장 브라우저에서 지원합니다. –

1

이 내가 사용하는 내 실제 코드는 (내 사용자 정의 지연 기능에 주어진 시간 동안 방치 숙박의 새로운 요소 슬라이드를 만든 다음 다시 사라)입니다 :

$element.next().next().hide().show('slide', {direction : 'left'}, 700, function() {$(this).delay(10000, function() {$element.next().next().hide('slide', {direction: 'left'}, 700)})});