2009-05-04 227 views
95

我在想,如何在jquery中能夠在幾秒後隱藏div?例如,與Gmail的消息類似。幾秒鐘後隱藏div

我已經盡力了,但無法讓它工作。

+1

只是隱藏夠好,還是你需要它褪色? – 2009-05-04 17:03:51

回答

206

這會在1秒(1000毫秒)後隱藏div。

setTimeout(function() { 
    $('#mydiv').fadeOut('fast'); 
}, 1000); // <-- time in milliseconds 

如果你只想隱藏不褪色,使用hide()

+2

**和**你已經瘋了* Joel Coehoorn *非常漂亮的一擊! :) – cregox 2011-03-18 19:14:39

+3

@James,肯定在最終的結果中沒有什麼區別,但是我認爲使用`.delay()`的實現對於`jQuery`更加「原生」和優雅。 – 2012-08-14 09:50:02

+0

你可以使用`.hide()`替換`.fadeOut('fast')`以便即時隱藏div。 – Raptor 2013-01-10 02:29:20

6
$.fn.delay = function(time, callback){ 
    // Empty function: 
    jQuery.fx.step.delay = function(){}; 
    // Return meaningless animation, (will be added to queue) 
    return this.animate({delay:1}, time, callback); 
} 

http://james.padolsey.com/javascript/jquery-delay-plugin/

(允許的方法鏈接)

3

使用jQuery計時器也將讓你與那些定時器關聯的名稱附在物體上。所以你可以附加幾個定時器到一個對象並停止其中的任何一個。

$("#myid").oneTime(1000, "mytimer1" function() { 
    $("#something").hide(); 
}).oneTime(2000, "mytimer2" function() { 
    $("#somethingelse").show(); 
}); 

$("#myid").stopTime("mytimer2"); 

eval函數(及其親屬,功能的setTimeout,和setInterval)提供接入到JavaScript編譯器。這有時是必要的,但在大多數情況下,這表示存在極其糟糕的編碼。 eval函數是JavaScript中濫用最多的功能。

http://www.jslint.com/lint.html

80

你可以嘗試.delay()

$(".formSentMsg").delay(3200).fadeOut(300); 

呼叫DIV設定延遲時間以毫秒爲單位,並設置要更改的屬性,在這種情況下,我用.fadeOut(),所以它可以是動畫,但也可以使用.hide()。

http://api.jquery.com/delay/

10

有一個非常簡單的方法來做到這一點。

問題是.delay隻影響動畫,所以你需要做的就是讓.hide()通過給它一個持續時間來像動畫一樣動作。

$("#whatever").delay().hide(1);

通過給它一個很好的時間短,這似乎是瞬間就像普通.hide功能。

5

jquery提供了多種方法來以定時方式隱藏div,不需要設置和稍後清除或重置間隔定時器或其他事件處理程序。這裏有一些例子。

純隱藏

// hide in one second 
$('#mydiv').delay(1000).hide(0); 

動畫隱藏

// start hide in one second, take 1/2 second for animated hide effect 
$('#mydiv').delay(1000).hide(500); 

褪色

// start fade out in one second, take 300ms to fade 
$('#mydiv').delay(1000).fadeOut(300); 

另外,所述方法可利用一個隊列名稱或功能作爲第二個參數(取決於方法進行)。以上所有呼叫和其他相關呼叫的文檔可以在這裏找到: https://api.jquery.com/category/effects/