Сброс setInterval при нажатии кнопки

Обновлено с последним кодом:

Вот последний код, все еще имеет 2 кнопки и 2 функции. Каждая кнопка должна запускать соответствующую функцию и устанавливать код для запуска одной и той же кнопки через каждую минуту через setInterval. По какой-то причине самый первый setInterval всегда остается установленным, даже после нажатия второй кнопки, которая должна его изменить. Не уверен, что я делаю не так

$(document).ready(function() {
    var myTimer = null;

    get_popular();

    clearInterval(myTimer);
    myTimer = null;
    myTimer = setInterval(function() {$('a.btnPopular').click();}, 60*1000);

    $('a.btnPopular').click( function(event) {
        event.preventDefault(); 
        get_popular( $(this) );

        clearInterval(myTimer);
        myTimer = null;
        myTimer = setInterval(function() {$('a.btnPopular').click();}, 60*1000);
    });

    function get_popular( that ) {
        $.ajax({
            url: 'get_popular.aspx?rand=' + Math.random(),
            type: 'GET',
            error: function(xhr, status, error) {
                // error message here
            },
            success: function(results) { 
                if ( typeof that != "undefined" ) {
                    that.closest('.outer_div').find('.inner_div').empty().append( results );
                } else {
                    $('.inner_div.new').empty().append( results ).removeClass('new');
                }
            }
        });
    }

    $('a.btnLatest').click( function(event) {
        event.preventDefault(); 
        get_latest( $(this) );

        clearInterval(myTimer);
        myTimer = null;
        myTimer = setInterval(function() {$('a.btnLatest').click();}, 60*1000);
    });

    function get_latest( that ) {
        $.ajax({
            url: 'get_latest.aspx?rand=' + Math.random(),
            type: 'GET',
            error: function(xhr, status, error) {
                // error message here
            },
            success: function(results) { 
                if ( typeof that != "undefined" ) {
                    that.closest('.outer_div').find('.inner_div').empty().append( results );
                } else {
                    $('.inner_div.new').empty().append( results ).removeClass('new');
                }
            }
        });
    }
});

2 ответа

Решение

Пытаться:

setInterval(function() {$('a.btnPopular').click();}, 60*1000);

Изменить: Также вы не можете позвонить get_popular(); без параметра;)

Редактировать 2: Это должно решить ваши проблемы:

var myTimer = null;

$('a.btnPopular').click(function(event) {
    event.preventDefault(); 
    get_popular($(this));
    clearTimeout(myTimer);
    myTimer = setTimeout(function(){$('a.btnPopular').click();}, 60*1000);
});

$('a.btnLatest').click(function(event) {
    event.preventDefault(); 
    get_latest($(this));
    clearTimeout(myTimer);
    myTimer = setTimeout(function(){$('a.btnLatest').click();}, 60*1000);
});
setInterval(function() {$('a.btnPopular').trigger('click');}, 60*1000);
// Ad do this
$(elem).click(function(){}) => $(elem).on('click', function(){});
Другие вопросы по тегам