Jquery延迟已禁用

时间:2011-07-02 00:11:10

标签: jquery html

为什么以下代码不起作用?我希望输入将被禁用一秒钟然后再次正常。

$('#chat_bg').attr('disabled', true).delay(1).$('#chat_bg').attr('disabled', false);

2 个答案:

答案 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