2009-05-04 145 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/