【问题标题】:jQuery: attach previous event handler removed with offjQuery:附加以前的事件处理程序,关闭时删除
【发布时间】:2015-11-29 13:39:05
【问题描述】:

我有一个 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 事件?

【问题讨论】:

    标签: jquery ajax events event-handling


    【解决方案1】:

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

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

    并将其传递给.click:

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

    【讨论】:

      猜你喜欢
      • 2012-09-04
      • 1970-01-01
      • 2012-05-10
      • 2011-12-12
      • 2015-08-13
      • 1970-01-01
      • 2010-11-21
      • 2020-01-12
      • 1970-01-01
      相关资源
      最近更新 更多