延迟JQuery效果

Dón*_*nal 48 javascript jquery effects

我希望在延迟几秒后淡出一个元素及其所有子元素.但我还没有找到一种方法来指定效果应该在指定的时间延迟后开始.

swi*_*ams 77

setTimeout(function() { $('#foo').fadeOut(); }, 5000);
Run Code Online (Sandbox Code Playgroud)

5000是五秒,以毫秒为单位.

  • 注意,这是使用Javascript的内置setTimeout函数,没有jQuery特定的. (3认同)

Sim*_*ver 43

我使用这个暂停插件我刚才写的

$.fn.pause = function(duration) {
    $(this).animate({ dummy: 1 }, duration);
    return this;
};
Run Code Online (Sandbox Code Playgroud)

像这样称呼它:

$("#mainImage").pause(5000).fadeOut();
Run Code Online (Sandbox Code Playgroud)

注意:您不需要回调.


编辑:您现在应该使用jQuery 1.4.内置delay()方法.我没有检查,但我认为它比我的插件更"聪明".

  • stop()不能与delay()一起使用,所以我仍然使用你的虚拟动画黑客.(bug http://bugs.jquery.com/ticket/6576) (3认同)

Dre*_*rew 19

以前你会做这样的事情

$('#foo').animate({opacity: 1},1000).fadeOut('slow');
Run Code Online (Sandbox Code Playgroud)

第一个动画没有做任何事情,因为你已经在元素上有不透明度1,但它会暂停一段时间.

在jQuery 1.4中,他们已经将它构建到框架中,因此您不必像上面那样使用hack.

$('#foo').delay(1000).fadeOut('slow');
Run Code Online (Sandbox Code Playgroud)

功能与原始jQuery.delay()插件相同http://www.evanbot.com/article/jquery-delay-plugin/4


小智 11

最好的方法是使用jQuery延迟方法:

$( '#添加my_id')延迟(2000).fadeOut(2000年).

  • jQuery 1.4及以上版本 (2认同)