我想取消绑定按钮的单击事件,直到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');
}
});
答案 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
设置,因为这是非常糟糕的做法,我修复了调用的语法问题,我认为这只是在将代码复制到问题时引起的。