2011-07-02 6 views
0

次のコードが機能しないのはなぜですか?私はその入力が1秒間無効になり、その後再び正常になることを望みます。Jqueryの遅延を無効にしました

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

'delay(1)。$( '#chat_bg')は無効です。 –

答えて

5

、および.delay()はミリ秒単位ではなく秒として引数を解釈しているという事実:

.delay().attr()が相互作用しない、デフォルトでeventsキューに影響を与えます。

簡単にして、そのままsetTimeoutを使用してください。

var $elt = $('#chat_bg').attr('disabled', true); 
setTimeout(function() 
{ 
    $elt.attr('disabled', false); 
}, 1000); 
2

あなたはfxキュー(この場合)に機能を追加するためにqueue[docs]を使用することができます。

$('#chat_bg').prop('disabled', true).delay(1000).queue(function(next) { 
    $(this).prop('disabled', false); 
    next(); 
}); 

delay[docs]はミリ秒とfxキューに作業しているだけで効果機能では時間がかかります。ほとんどの機能は、attrのようにキューに全く追加されません。この場合は、関数を明示的にキューに入れる必要があります(上記のように)。

また、ブール値を設定するときは、prop[docs]を代わりに使用する必要があります。


それとも単に@Matt describesとして、setTimeoutを使用しています。別に文法的に間違っJavaScriptから

関連する問題