$(".getDetails").click(function() {
// some stuff like fetching response from server
})
当用户在几分之一秒内多次点击 UI 上的 getDetails 按钮时,jquery 生成两次点击函数调用,我的逻辑失败。 我认为解决这个问题的方法是在第一次点击时禁用按钮(这样就不能多次点击)。一旦我得到回应或就在返回之前 从点击方法我让它启用。有没有更好的解决方案?
如果不是,我如何在用户第一次单击按钮时立即禁用按钮。我认为它需要在调用 click 方法之前或在 html 元素中的某个地方完成?
Java 提供了 synchronized 关键字,所以在方法内部一次只有一个线程进入,我不确定 javascript 中是否存在类似的东西?
最佳答案
假设点击处理程序执行 AJAX 请求,您可以在发出请求之前将按钮设置为禁用,然后在请求完成后再次启用它。试试这个:
$(".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);
}
});
});
关于javascript - 处理 javascript/jquery 中的多线程问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38715145/