2011-01-21 5 views
1

토글 기능을 사용하여 setInterval을 재시작하는 데 어려움이 있습니다. 나는 그것을 중지 얻을 - 필요할 때,하지만 난 토글이 "종료"여기 JQuery restart setInterval

는 setInterval을

전환에
var auto_refresh = setInterval(function() { $('.holder').load('board.php'); }, 5000); 

중지를 설정 내 코드

때 그것을 다시 얻을 수 없습니다 -하지만 원하는 그것은 "반전 토글"에서 시작하는 것입니다

$('.readmore').live('click',function() { 
    $(this).next().slideToggle('slow'); 
    clearInterval(auto_refresh); 
}, function() { 
    var auto_refresh = setInterval(function() { $('.holder').load('board.php'); }, 5000); 
}); 

많은 도움을 주시면 감사하겠습니다. 매우 간단합니다 그냥은 "기능에서"기능을 넣어 잘 beed 적이

+0

에게 난을 2 개의 함수를'live()'함수에 전달했기 때문에 코드가 작동하지 않는다고 가정 할 때, 당신의 의도는 무엇입니까? 'live()'는 오직 하나의 함수를 바인딩합니다 ... – davin

+0

@davin "당신의 의도는 무엇입니까?" - 내 Q 당 하나의 토글을 기초로 setInterval을 멈추고 시작하고 싶습니다. –

답변

2

시도 :

$('.readmore').live('click',function() { 
    $(this).next().slideToggle('slow'); 

    if(!auto_refresh) { 
     auto_refresh = setInterval(function() { $('.holder').load('board.php'); }, 5000); 
    } 
    else { 
     clearInterval(auto_refresh); 
     auto_refresh = null; 
    } 
}); 

또는 아마 더 나은, 결정하는 요소의 상태를 사용

$('.readmore').live('click',function() { 
    var $elem = $(this).next(); 

    if($elem.is(':visible')) { 
     $elem.slideUp('slow'); 
     clearInterval(auto_refresh); 
    } 
    else { 
     $elem.slideDown('slow'); 
     auto_refresh = setInterval(function() { $('.holder').load('board.php'); }, 5000); 

    } 
}); 
+0

OK,하지만 잠깐 살펴 보는 것은 "옳은"방법일까요? if (auto_refresh) ... 그런 다음 시작하고 싶지 않다면 멈추고 싶습니다. 아무리해도 시도해 볼 것입니다. - 감사합니다. –

+0

감사합니다. "토글"을 사용하고 있습니다. 닫기 "만약 그 말이 어떤 의미인지 많이 고마워요. –