jQuery:使用off删除先前的事件处理程序

时间:2015-11-29 13:39:05

标签: jquery ajax events event-handling

我有一个AJAX电话。在此调用期间,必须禁用该按钮。 然后,当呼叫结束时,必须重新激活按钮的click事件。

我使用此代码执行此操作。不幸的是,点击事件仅在第一次起作用

$('#reload_btn').on('click', function(){
    $(this).off('click');

    $.ajax({
        type: 'GET',
        url: 'ajax/stat.php',
        data: {use: 'get'},
        beforeSend: function(){
            $('#reload_btn').attr('src', 'files/reload_btn.gif');
        },
        success: function(result){
            $('#ajax').html(result);
        },
        error: function(data){
            $('#ajax').html('Error!');
        },
        complete: function(){
            $('#reload_btn').on('click');
            $('#reload_btn').attr('src', 'files/reload_btn.png');
        }
    });
});

有没有办法在不调用外部函数的情况下重新挂接click事件?

1 个答案:

答案 0 :(得分:2)

如果更改2行,则可以重新附加处理程序:存储对函数的引用:

$('#reload_btn').on('click', f = function(){

并将其传递给.click

    complete: function(){
        $('#reload_btn').on('click', f);