我正在尝试按下按钮,在运行调用API的函数时禁用该按钮,当它完成时我想重新启用该按钮。
我尝试了一些变体,例如attr()
/ removeAttr()
,以及$(this)
和$('#miss')
下面的变体,但奇怪的是,我只有按钮禁用的禁用行,当我有禁用后跟启用时,如下面的代码,按钮永远不会禁用。我错过了什么?
$('#miss').click(function() {
$(this).prop('disabled', true);
registerShot('miss');
$(this).prop('disabled', false);
});
答案 0 :(得分:1)
如果您的registerShot
功能没有问题,这将对您有所帮助:
$('#miss').click(function() {
let missButton = $(this);
$(missButton).prop('disabled', true);
registerShot('miss')
.then(function(res) {
$(missButton).prop('disabled', false);
});
});
答案 1 :(得分:0)
问题是您的函数是异步调用的,因此按钮被禁用,但在调用registerShot后立即重新启用。
您可以将元素传递给registerShot,然后在函数末尾重新启用它:
$('#miss').click(function () {
$(this).prop('disabled', true);
registerShot('miss',this);
});
function registerShot(p1,e) {
//CodeHere
(e).prop('disabled', false);
}