2011-01-20 58 views
1

嗨夥計不知道這樣做的最佳方式 - 即在哪裏把if的..我有一個div加載一個頁面,並有一個setInterval()函數。點擊按鈕#1(加載頁面)停止setInterval()並追加一個新的div(絕對位置),直到按鈕#2(開啓單擊apended div)然後重新啓動它。 .. comprende?JQuery自動刷新(setInterval)

這裏是我的「基地」代碼

這是第一個按鈕的動作

$('.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); 
});