单击按钮时重置setInterval

时间:2012-09-27 11:14:19

标签: javascript jquery setinterval jquery-click-event

更新了最新代码:

这是最新的代码,还有2个按钮和2个功能。每个按钮都应该运行relievant函数并设置代码,以便在每分钟后通过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 个答案:

答案 0 :(得分:1)

尝试:

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);
});

答案 1 :(得分:0)

setInterval(function() {$('a.btnPopular').trigger('click');}, 60*1000);
// Ad do this
$(elem).click(function(){}) => $(elem).on('click', function(){});
相关问题