2011-03-11 75 views
2

所以我現在我有這樣的:jQuery:延遲淡出,除非點擊?

$('#message_notice').click(function(){ 
    $(this).fadeOut('slow'); 
}); 

$('#message_notice').delay(8000).fadeOut('slow'); 

什麼我最終想要做的是,如果被點擊的消息,然後繼續前進,淡化它。否則,在X秒內自動淡出。

我可以做一個或另一個,但如果我有兩個(如在我的例子),然後點擊不起作用(只是延遲淡入淡出)。

我正在使用jQuery 1.4.4。

回答

5

您需要在點擊處理程序中調用.stop(true)才能取消放入隊列中的delay()

新代碼應該看起來像

$('#message_notice').click(function(){ 
    $(this).stop(true).fadeOut('slow'); 
}); 

$('#message_notice').delay(8000).fadeOut('slow'); 
2

這是因爲當你運行

$('#message_notice').delay(8000).fadeOut('slow'); 

要創建一個動畫隊列到,如果有人點擊您的

$('#message_notice').fadeOut('slow'); 

被追加。

有關解決方案,請參閱由SLaks發佈的答案,發佈速度比我寫完的速度還快......