我有一个分页按钮,它运行Ajax函数以在页面上提取新结果。一切都运行正常,唯一的问题是,如果我双击按钮,我会将结果加倍,因为它正在进行两次相同的调用。
我知道这件事有很多解决方法,但似乎没有任何工作可以完全发挥作用。
现在我使用var作为旗帜......
var isPaging = 0;
$('.container').on('click', '.bh-pagination-button', function(){
if (!isPaging) {
isPaging = 1;
callBehanceProjectsList();
isPaging = 0;
}
});
如果我有点慢,似乎有效,但如果我快速点击两次或三次,它会进行第n次通话,所有这些都是相同的。
然后我看到还有其他解决方案:
one();
unbind();
die();
etc...
那些实际上可以工作,问题是一旦我禁用了click事件,我就无法重新启用它,并且我需要在分页结束后多次点击。
你有什么想法吗?
提前致谢。
答案 0 :(得分:1)
这样的事情怎么样?
$('.container').on('click', '.bh-pagination-button', function() {
$(this).prop('disabled', true);
callBehanceProjectsList();
$(this).prop('disabled', false);
});
这样,按钮将在分页开始之前被禁用,并在分页结束后自动启用。这样可以防止多次点击按钮,因此也可以消除对特定变量的需求。
答案 1 :(得分:0)
我认为你必须使用Jquery.BlockUI.Js。
以下是该示例代码,
$(document).ready(function() {
$("#Button3").click(function() {
console.log('d');
$.blockUI();
setTimeout(function() {
$.unblockUI({
onUnblock: function() {
//Write your unblock logic
alert('onUnblock');
}
});
}, 2000);
});
});
你甚至可以在收到来自ajax电话的回复后解锁它,这对你的情况来说似乎是一个更好的解决方案。
答案 2 :(得分:0)
我也遇到了类似的问题。我的解决方法是_
$('#acceptButton').attr("disabled", true);
acceptButton
是按钮ID。