$(".getDetails").click(function() {
// some stuff like fetching response from server
})
当用户在几秒钟内多次点击UI上的getDetails按钮时,jquery会生成两次click函数调用,并且我的逻辑失败.
我认为解决方法是首先单击自身禁用按钮(这样使用不能多次单击).一旦我得到答复或在返回之前
从click方法我启用它.有没有更好的解决方案?
如果不是,如何在用户第一次点击按钮时立即禁用按钮.我认为需要在调用click方法或html元素中的某些位置之前完成它?
Java提供了synchronized关键字,以便只有一个线程在方法内输入,我不确定javascript中是否存在类似的东西?
最佳答案 假设click处理程序执行AJAX请求,您可以在发出请求之前将按钮设置为disabled,然后在请求完成后再次启用它.试试这个:
$(".getDetails").click(function(){}
var $btn = $(this).prop('disabled', true);
$.ajax({
url: '/foo'
success: function() {
console.log('It worked!');
},
error: function() {
console.log('It failed!');
},
complete: function() {
$btn.prop('disabled', false);
}
});
});