延迟 JQuery 效果

IT技术 javascript jquery effects
2021-02-17 08:47:01

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

6个回答
setTimeout(function() { $('#foo').fadeOut(); }, 5000);

5000 是以毫秒为单位的五秒。

我想,这只是部分回答了他的问题。
2021-04-15 08:47:01
请注意,这是使用 Javascript 的内置 setTimeout 函数,与 jQuery 无关。
2021-05-07 08:47:01

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

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

像这样称呼它:

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

注意:您不需要回调。


编辑:您现在应该使用jQuery 1.4。内置延迟()方法。我没有检查过,但我认为它比我的插件更“聪明”。

jQuery 有一个内置的动画队列......如果你从不重置/停止队列,“暂停”作为动画的时间段,实际上并没有动画任何东西。
2021-04-16 08:47:01
只要注意 jQuery 是否添加了 pause() 函数,因为它可能比我的更好!但是像这样抽象出你在做什么是很好的
2021-04-18 08:47:01
有人可以解释为什么我不需要回调吗?我不太确定为什么这不会立即返回
2021-04-23 08:47:01
这对我很有帮助!谢谢 :-)
2021-05-11 08:47:01
stop() 不适用于 delay(),所以我仍然使用你的虚拟动画技巧。(bug bugs.jquery.com/ticket/6576 )
2021-05-15 08:47:01

以前你会做这样的事情

$('#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

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

$('#my_id').delay(2000).fadeOut(2000);

您可以通过使用fadeTo() 方法并在其上设置5 秒延迟来避免使用setTimeout。

$("#hideAfterFiveSeconds").click(function(){
  $(this).fadeTo(5000,1,function(){
    $(this).fadeOut("slow");
  });
});
与 setTimeout 相比,执行这种块是非常消耗 CPU 的。我看不出优势。- 为什么需要避免使用本地计时器?
2021-04-17 08:47:01