2008-10-30 122 views
47

我想在延遲幾秒鐘後淡出一個元素及其所有子元素。但我還沒有找到一種方法來指定效果應該在指定的時間延遲後開始。延遲JQuery效果

+1

你能舉一個例子,說明一個元素的子元素何時不與元素一起褪色? – tvanfosson 2008-10-30 18:31:28

+1

對不起,我的錯誤,我會更新帖子 – 2008-10-30 18:38:00

回答

77
setTimeout(function() { $('#foo').fadeOut(); }, 5000); 

5000是五秒鐘,以毫秒爲單位。

+3

請注意,這是使用Javascript的內置setTimeout函數,沒有什麼特定的jQuery。 – 2008-10-30 18:24:27

+0

這隻能部分回答他的問題,我想。 – 2008-10-30 18:26:41

+0

如果孩子們在#foo元素中,他們也應該褪色... – swilliams 2008-10-30 18:29:43

1

您可以通過使用fadeTo()方法避免使用setTimeout,並設置5秒延遲。

$("#hideAfterFiveSeconds").click(function(){ 
    $(this).fadeTo(5000,1,function(){ 
    $(this).fadeOut("slow"); 
    }); 
}); 
43

我用這個插件暫停我剛寫

$.fn.pause = function(duration) { 
    $(this).animate({ dummy: 1 }, duration); 
    return this; 
}; 

這樣稱呼它:

$("#mainImage").pause(5000).fadeOut(); 

注意:你並不需要一個回調。


編輯:您現在應該使用jQuery 1.4. built in delay()方法。我沒有檢查,但我認爲它比我的插件更「聰明」。

1

我寫了一個插件,可以讓你在鏈中添加延遲。例如$('#div')。fadeOut()。delay(5000).fadeIn(); //淡出元素,等待5秒,淡入淡出元素。

它不使用任何動畫hack或過多的回調鏈接,只是簡單的乾淨的短代碼。

http://blindsignals.com/index.php/2009/07/jquery-delay/

19

以前,你會做這樣的事情

$('#foo').animate({opacity: 1},1000).fadeOut('slow'); 

第一動畫沒有做任何事情,因爲你已經有了透明度1的元素,但它會暫停的時間量。

在jQuery 1.4中,他們已經將此構建到框架中,因此您不必像上面那樣使用hack。

$('#foo').delay(1000).fadeOut('slow'); 

的功能是一樣的原始jQuery.delay()插件http://www.evanbot.com/article/jquery-delay-plugin/4

11

最好的辦法是通過使用jQuery延時方法:

$( '#添加my_id')延遲(2000年)。淡出(2000);