2012-04-27 35 views
1

在點擊一個元素我試圖觸發一些事情,但其中幾個我想延遲,直到後來..我試過這個沒有運氣:jquery延遲或settime在這

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

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

}); 

。在css中隱藏「display:none;」我試圖推遲隱藏item3和item4幾秒鐘。

感謝

+0

這段代碼有什麼問題? – Blender 2012-04-27 04:24:32

+0

它不會等待2(2000)秒來隱藏物品。 – Josh 2012-04-27 04:25:38

回答

3

.delay()隻影響在動畫隊列中的項目;添加一個類不會將元素放入動畫隊列中。請參閱http://api.jquery.com/delay/

你會更好的使用本地setTimeout方法。

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

我試圖不使用setTime了,還是可以使用? – Josh 2012-04-27 04:27:25

+0

你爲什麼要避免它?如果jQuery的'.delay()'應用於任何元素(在動畫隊列中),它只會在內部實現'setTimeout'。 – 2012-04-27 04:30:00

+0

好的,非常感謝:) – Josh 2012-04-27 04:40:48

1

我能夠用下面的一段代碼來做到這一點 - http://jsfiddle.net/UzVLk/

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

如果我沒有通過任何參數來掩飾,這是行不通的。

+0

你的小提琴似乎不適合我。瀏覽器? – philwinkle 2012-04-27 04:40:27

+0

或許。它在Chrome上運行良好 – 2012-04-27 06:08:53

0

簽名是.delay(duration [, queueName])

所以你不能使用回調function(){}作爲第二個參數。試試這個:

$('.push').click(function() { 
    $('#item1, #item2').addClass('newclass'); 
    $('.item3, .item4').delay('2000').hide('slow'); 
});