为什么以下代码不起作用?我希望输入将被禁用一秒钟然后再次正常。
$('#chat_bg').attr('disabled', true).delay(1).$('#chat_bg').attr('disabled', false);
答案 0 :(得分:6)
除了语法上无效的JavaScript,以及.delay()
将参数解释为毫秒而不是秒的事实:
.delay()
仅影响events
队列,.attr()
不与之交互。
保持简单,只需使用setTimeout
。
var $elt = $('#chat_bg').attr('disabled', true);
setTimeout(function ()
{
$elt.attr('disabled', false);
}, 1000);
答案 1 :(得分:2)
您可以使用queue
[docs]向fx
队列添加函数(在本例中):
$('#chat_bg').prop('disabled', true).delay(1000).queue(function(next) {
$(this).prop('disabled', false);
next();
});
delay
[docs]花费时间(以毫秒为单位),仅影响在fx
队列上起作用的函数。大多数功能根本不会添加到任何队列,例如attr
。在这种情况下,您必须显式地将一个函数放入队列中(如上所示)。
此外,在设置布尔值时,应使用prop
[docs]代替。
或者只使用setTimeout
,@Matt describes。