Автообновление JQuery (setInterval) - PullRequest
1 голос
/ 20 января 2011

Привет, ребята, не уверены, что лучший способ сделать это - то есть, куда поместить if. У меня есть div, который загружает страницу и имеет функцию setInterval ().

НаНа загруженной странице есть 1 кнопка. То, что я хочу получить, это когда кнопка # 1 (загруженная страница) нажата, чтобы остановить setInterval () и добавить новый div (абсолютную позицию), пока не будет нажата кнопка # 2 (на добавленном 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(), новсе еще нужно остановить обновление и перезапустить его - на основе переключения, но я подчеркиваю, что идея переключения не является предпочтительным способом.

Ответы [ 2 ]

1 голос
/ 20 января 2011

Я создал для вас пример в 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 голос
/ 20 января 2011

Я думаю, что вы ищете, это функция clearInterval().Это позволит вам удалить ваш интервал на основе идентификатора интервала (в вашем случае 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);
});
...