2011-01-20 5 views
1

안녕하세요 사람들이 이것을 수행하는 가장 좋은 방법은 확실하지 않습니다. 즉 if의 위치는 어디입니까? 페이지를로드하고 setInterval() 함수가있는 div가 있습니다.JQuery 자동 새로 고침 (setInterval)

로드 된 페이지에는 버튼 1 (로드 된 페이지)을 클릭하여 setInterval()을 중지하고 버튼 2 (켜기 페이지)까지 새 div (절대 위치)를 추가 할 때 버튼 1 개가 있습니다. apended div)를 클릭하여 다시 시작합니다. .. comprende?

여기이이 페이지로드

$('.replybutton').live('click',function(){ 
    $('.discussion').append('<div class="replyarea">some content in here plus "button number2</div>'); 
    }); 

첫 번째 단추에서 작업 내 "기본"코드

입니다 - 처음

$('.discussion').load('board2.php'); 

을 그리고 이것은 새로 고침 기능

입니다
var auto_refresh = setInterval(
function() 
    { 
    $('.discussion').fadeOut().load('board2.php').fadeIn(); 

    }, 10000); 

아무 것도 실패 함 - (그러나 선호하지 않음) $('.replybutton').live('click',function()에 사용 된 추가가 아닌로드 된 페이지에서 토글을 사용할 수 있지만 토글을 기반으로 새로 고침을 중지하고 다시 시작해야합니다. 그러나 토글 아이디어를 강조합니다. 선호하는 방법이 아닙니다.

답변

1

내가 JSFiddle에서 당신을 위해 예를 생성

다음은 워드 프로세서입니다. 여기에서 확인하십시오 : http://jsfiddle.net/7YYV7/.

코드

var intervalId = 0; 
intervalId = setInterval(fadeDiscussion, 3000); 

$(function() { 
    $('input[name=click]').bind('click', function() { 
     clearInterval(intervalId);  

     $('.discussion').append('<div class="replyarea">some content in here plus <input type="button" name="save" value="save"></div>');  
    }); 

    $('input[name=save]').live('click', function() { 
     intervalId = setInterval(fadeDiscussion, 3000); 
    }); 
}); 

var i = 1; 
function fadeDiscussion() { 
    console.log(i); 
    $('.discussion').fadeOut().fadeIn(); 
    i++; 
} 
1

당신이 찾고있는 것이 기능이라고 생각합니다. clearInterval(). 이렇게하면 간격 ID (귀하의 경우 auto_refresh)를 기준으로 기간을 삭제할 수 있습니다. https://developer.mozilla.org/en/DOM/window.clearInterval

이제 이름이 지정된 함수에서 콜백 포장 수 :

var reload = function(){ 
    $('.discussion').fadeOut().load('board2.php').fadeIn(); 
}; 

var auto_refresh = setInterval(reload, 10000); 

$('button').click(function(){ 
    clearInterval(auto_refresh); 
});