2010-09-07 63 views
5

我需要做一些fadeIn,然後呆在那裏一秒鐘,然後使用jQuery fadeOut。使用jquery如何使用fadein,延遲和淡出問題

我試過這個,但它dosent工作的原因?

$('#' + uMessage).fadeIn("fast").fadeOut("slow"); // works 
$('#' + uMessage).fadeIn("fast").delay(1000).fadeOut("slow"); // fails 

有什麼建議,我會出錯嗎?

非常感謝!

+1

它在哪裏失敗?它是否做任何事情? – 2010-09-07 14:46:27

+0

啊,對不起,當我添加延遲時它不會消失.. – 2010-09-07 14:48:59

+0

您是否調用'.stop()'或以某種*其他*方式清除隊列? – 2010-09-07 14:52:09

回答

12

你的第二個方法應該是罰款實際上,對應於文檔(http://api.jquery.com/delay/

另一種方法可以是使用被稱爲時淡入已經完成了回調函數:

$('#' + uMessage).fadeIn("fast", function() { $(this).delay(1000).fadeOut("slow"); }); 

只是一個猜

編輯:

如果您不能使用延遲()方法,那麼你可以試試這個:

$('#' + uMessage).fadeIn("fast", function() { 
    c_obj = $(this); 
    window.setTimeout(function() { $(c_obj).fadeOut("slow"); }, 1000); 
}); 

下面是一個例子:http://jsfiddle.net/KwWFR/

+0

這不適合我,任何想法? – 2010-09-07 18:12:06

+1

它至少與jQuery v1.4.2一起工作:http://jsfiddle.net/D4eMb/1/ – sled 2010-09-07 18:29:36

+0

我已經添加了另一個解決方案 – sled 2010-09-07 18:35:34

3

也許嘗試使用的API中指定FadeIn功能的回調。這將在淡入完成後調用。

$('#' + uMessage).fadeIn("fast", function() { 
    $(this).delay(1000).fadeOut("slow"); 
}); 
1

我認爲問題出在你使用jQuery的版本:

http://jsfiddle.net/b85hx/

這一個工作正常。切換到1.3.2,它已損壞。

+0

即時通訊使用v1.3.2 – 2010-09-07 15:02:16

+0

在這種情況下,更新或去@ sled的解決方案 – 2010-09-07 15:09:55

2

延遲添加延遲()函數在淡出淡入淡出是行不通的。使用與隊列組合延遲後的回調,有時作品的其他情形

這結束了對我的工作:

$('#message').fadeIn(function() { 
    window.setTimeout(function() { 
    $('#message').fadeOut('slow'); 
    }, 2000); 
}); 
0

jQuery的官方文件說,這第二個參數是不是一個回調,但寬鬆的風格。

http://api.jquery.com/fadeIn/#fadeIn-duration-easing-complete http://api.jquery.com/fadeOut/#fadeOut-duration-easing-complete

$('#el').fadeOut(750,'swing',function(){ 
    $('#el').fadeIn(); 
}); 

所以只需將回調第三個參數,一切都將正常工作。

+0

試圖與jQuery 1.3.2 - 功能不會觸發。 – user1380540 2016-08-24 22:45:47

+0

然後向jQuery報告,因爲它必須根據文檔觸發。我敢打賭,你有選擇者或其他地方的問題,但。 – 2016-08-26 10:07:15