Javascript 延迟JQuery效应

Javascript 延迟JQuery效应,javascript,jquery,effects,Javascript,Jquery,Effects,我想在延迟几秒钟后淡出一个元素及其所有子元素。但我还没有找到一种方法来指定效果应该在指定的时间延迟后开始 setTimeout(function() { $('#foo').fadeOut(); }, 5000); 5000是以毫秒为单位的5秒。您可以通过使用fadeTo()方法避免使用setTimeout,并在此基础上设置5秒延迟 $("#hideAfterFiveSeconds").click(function(){ $(this).fadeTo(5000,1,function(){

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

setTimeout(function() { $('#foo').fadeOut(); }, 5000);

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

您可以通过使用fadeTo()方法避免使用setTimeout,并在此基础上设置5秒延迟

$("#hideAfterFiveSeconds").click(function(){
  $(this).fadeTo(5000,1,function(){
    $(this).fadeOut("slow");
  });
});

我使用我刚写的暂停插件

$.fn.pause = function(duration) {
    $(this).animate({ dummy: 1 }, duration);
    return this;
};
可以这样称呼:

$("#mainImage").pause(5000).fadeOut();
注意:您不需要回调



编辑:现在应该使用该方法。我没有检查过,但我认为它比我的插件更“聪明”。

我已经编写了一个插件,让你在链中添加延迟

例如$('#div').fadeOut().delay(5000).fadeIn();//淡出元素,等待5秒,淡入元素

它不使用任何动画破解或过度的回调链接,只使用简单干净的短代码


以前您会这样做

$('#foo').animate({opacity: 1},1000).fadeOut('slow');
第一个动画没有做任何事情,因为元素上已经有不透明度1,但它会暂停一段时间

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

$('#foo').delay(1000).fadeOut('slow');

该功能与原始的
jQuery.delay()
plugin

相同。最好的方法是使用jQuery delay方法:


$('my#u id')。延迟(2000)。淡出(2000)

请注意,这是使用Javascript的内置setTimeout函数,与jQuery无关。我想这只是部分回答了他的问题。你能举一个例子说明元素的子元素何时不会随元素褪色吗?对不起,我的错误,我将更新postdoing这种块与setTimeout相比非常占用cpu。我看不出有什么好处为什么要避免使用本机计时器?这对我很有帮助!谢谢:-)请注意jQuery是否添加了pause()函数,因为它可能比我的更好!但是把你现在做的事情抽象出来很好有人能解释一下为什么我不需要回电话吗?我不太清楚为什么这不会立即返回jQuery有一个内置的动画队列。。。如果您从未重置/停止队列,“暂停”作为动画的一段时间,实际上不会对任何内容进行动画制作。stop()不适用于delay(),因此我仍然使用您的虚拟动画。(错误)