2012-04-27 11 views
1

要素をクリックすると、いくつかのトリガーをトリガーしようとしていますが、後で遅延させたいものです。これでJqueryの遅延や設定時間が外れる

$('.push').click(function() { 
    $('#item1, #item2').addClass('newclass'); 

    $('.item3, .item4').delay('2000', function() { 
     $(this).addClass('hidden'); //Or .hide perhaps? 
    }); 

}); 

.hiden in cssは「display:none;」です。私はitem3とitem4を数秒間隠すのをやめようとしています。

おかげ

+0

このコードの問題点は何ですか? – Blender

+0

アイテムを非表示にするまで2(2000)秒待つことはありません。 – Josh

答えて

3

.delay()のみアニメーションキュー内の項目に影響します。クラスを追加しても要素はアニメーションキューに入れられません。 http://api.jquery.com/delay/を参照してください。

ネイティブのsetTimeoutメソッドを使用する方がよいでしょう。

window.setTimeout( 
    function() { 
     $('.item3, .item4').addClass('hidden'); 
    }, 
    2000 
); 
+0

私はsetTimeを使用しないようにしようとしていましたか、それとも使用できますか? – Josh

+0

なぜそれを避けたいですか? jQueryの '.delay()'が(アニメーションキュー内のどの要素にも)適用されると、内部的には 'setTimeout'しか実装されません。 –

+0

ありがとうございます:) – Josh

1

私は、次のコードを使用してそれを行うことができました - http://jsfiddle.net/UzVLk/

$('.item3, .item4').delay(2000).hide('fast'); 

私は非表示に任意のパラメータを渡されていなかった場合は、それが働いていませんでした。

+0

あなたのフィドルは私にとってはうまくいかないようです。ブラウザ?おそらく、 – philwinkle

+0

。 Chromeで正常に動作します –

0

署名はあなたが2番目のパラメータとして、コールバックfunction(){}を使用することはできません.delay(duration [, queueName])

です。試してみてください:

$('.push').click(function() { 
    $('#item1, #item2').addClass('newclass'); 
    $('.item3, .item4').delay('2000').hide('slow'); 
}); 
関連する問題