如何在jquery中取消绑定后绑定click事件

时间:2018-01-16 09:37:11

标签: javascript jquery

我想取消绑定按钮的单击事件,直到ajax调用完成。

它取消绑定点击,但我无法重新点击。

以下是我的Ajax电话: -

   $("#btnsearch").click(function (event) {        
            $('#btnsearch').text('Wait...').unbind('click');
            $.ajax({
                url: "//api/Ulyx/OrderDetails",
                type: "GET",
                dataType: "json",
                beforeSend: function () {               
                },
                async: false,           
                },
                crossDomain: true,
                complete: function (data) {                 
                    $('#btnsearch').text('Search').bind('click');                  
                }
            });

1 个答案:

答案 0 :(得分:1)

您可以简单地存储一个状态变量来表示AJAX请求正在进行以禁止发送另一个事件,而不是绑定/取消绑定事件:

$("#btnsearch").click(function(event) {
  if (!$(this).data('ajax-in-progress')) {
    $(this).text('Wait...').data('ajax-in-progress', true);

    $.ajax({
      url: "//api/Ulyx/OrderDetails",
      type: "GET",
      dataType: "json",
      crossDomain: true,
      complete: function(data) {
        $('#btnsearch').text('Search').data('ajax-in-progress', false);
      }
    });
  }
});

另请注意,我删除了async: false设置,因为这是非常糟糕的做法,我修复了调用的语法问题,我认为这只是在将代码复制到问题时引起的。