如何等待5秒钟的jQuery?

我试图在页面加载的时候创build一个效果,5秒之后,屏幕上的成功消息淡出或者向上滑动。

我怎样才能做到这一点?

内置javascript setTimeout 。

setTimeout( function() { //do something special }, 5000); 

更新 :你想等待,因为当页面完成加载,所以把这个代码在你的$(document).ready(...); 脚本。

更新2 :jquery 1.4.0引入了.delay方法。 检查出来 。 请注意,.delay仅适用于jQuery特效队列。

使用正常的JavaScript计时器:

 $(function(){ function show_popup(){ $("#message").slideUp(); }; window.setTimeout( show_popup, 5000 ); // 5 seconds }); 

这将在DOM准备好之后等待5秒钟。 如果你想等到页面实际loaded你需要使用这个:

 $(window).load(function(){ function show_popup(){ $("#message").slideUp(); }; window.setTimeout( show_popup, 5000 ); // 5 seconds }) 

编辑:在回答OP的评论询问是否有办法做到这一点在jQuery和不使用setTimeout答案是否定的。 但是如果你想让它更“jQueryish”,你可以这样包装它:

 $.wait = function( callback, seconds){ return window.setTimeout( callback, seconds * 1000 ); } 

你可以这样称呼它:

 $.wait( function(){ $("#message").slideUp() }, 5); 

我遇到了这个问题,我想我会提供一个关于这个话题的更新。 jQuery(v1.5 +)包含一个Deferred模型, 尽pipe在jQuery 3之前不遵守Promises / A规范,但它通常被认为是解决许多asynchronous问题的更清晰的方法。 我相信使用这种方法实现$.wait()方法是特别可读的:

 $.wait = function(ms) { var defer = $.Deferred(); setTimeout(function() { defer.resolve(); }, ms); return defer; }; 

以下是如何使用它:

 $.wait(5000).then(disco); 

但是,如果在暂停之后,只希望对单个jQueryselect执行操作,那么您应该使用jQuery的本机.delay() ,我相信它也使用了Deferred's:

 $(".my-element").delay(5000).fadeIn(); 

一直在使用这一个消息覆盖,可以立即closures点击或10秒钟后自动closures。

 button = $('.status-button a', whatever); if(button.hasClass('close')) { button.delay(10000).queue(function() { $(this).click().dequeue(); }); } 
 setTimeout(function(){ },5000); 

将您的代码置于{ }

 300 = 0.3 seconds 700 = 0.7 seconds 1000 = 1 second 2000= 2 seconds 2200 = 2.2 seconds 3500 = 3.5 seconds 10000 = 10 seconds 

等等

Underscore库还提供了一个“延迟”function:

 _.delay(function(msg) { console.log(msg); }, 5000, 'Hello'); 

根据乔伊的回答,我想出了一个意图(通过jQuery,阅读“队列”)的解决scheme。

它遵循jQuery.animate()语法 – 允许与其他fx函数链接,支持“slow”和其他jQuery.fx.speeds以及完全的jQuery。 如果你停下来的话,将会和animation一样处理。

js用更多的用法(比如炫耀.stop())来进行testing,可以在这里find。

解决scheme的核心是:

 $('<queue/>') .delay(100 /*ms*/) .queue( (next) => { $('#result').text('done.'); next(); } ); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="result"></div> 
 $( "#foo" ).slideUp( 300 ).delay( 5000 ).fadeIn( 400 );