在使用jQuery淡化元素之前,你如何暂停?

我想在我的页面上刷一个成功的消息。

我使用jQuery fadeOut方法淡化然后删除元素。 我可以增加持续时间以使其持续更长时间,但这看起来很奇怪。

我想要发生的是让元素显示五秒钟,然后快速淡化,最后被删除。

你怎么能使用jQuery动画这个?

jQuery 1.4中的新delay()函数应该可以解决问题。

 $('#foo').fadeIn(200).delay(5000).fadeOut(200).remove(); 

使用setTimeout(function(){$elem.hide();}, 5000);

其中$elem是您要隐藏的元素, 5000是延迟(以毫秒为单位)。 实际上,您可以在调用setTimeout()使用任何函数,该代码只是为了简单起见而定义了一个小的匿名函数。

虽然@John Sheehan的方法有效,但是你会遇到IE7中的jQuery fadeIn / fadeOut ClearType小故障 。 就个人而言,我选择@John Millikin的setTimeout()方法,但是如果你采用纯jQuery方法,最好在非不透明属性上触发动画,例如边距。

 var left = parseInt($('#element').css('marginLeft')); $('#element') .animate({ marginLeft: left ? left : 0 }, 5000) .fadeOut('fast'); 

如果您知道您的保证金是固定值,您可以更清洁:

 $('#element') .animate({ marginLeft: 0 }, 5000) .fadeOut('fast'); 

编辑 :看起来jQuery FxQueues插件可以满足您的需求:

 $('#element').fadeOut({ speed: 'fast', preDelay: 5000 }); 

对于纯jQuery方法,您可以这样做

 $("#element").animate({opacity: 1.0}, 5000).fadeOut(); 

这是一个黑客,但它完成了这项工作

 var $msg = $('#msg-container-id'); $msg.fadeIn(function(){ setTimeout(function(){ $msg.fadeOut(function(){ $msg.remove(); }); },5000); }); 

根据dansays的评论,以下似乎工作得很好:

$('#thing') .animate({dummy:1}, 2000) .animate({ etc ... });

1.6.2的更新

Nathan Long的回答将导致元素弹出而不遵守延迟或fadeOut

这有效:

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

dansays的答案对我不起作用。 出于某种原因, remove()立即运行,div在任何动画发生之前消失。

但是,以下工作(通过省略remove()方法):

 $('#foo').fadeIn(500).delay(5000).fadeOut(500); 

我不介意页面上是否有隐藏的DIV(不管怎样,不应该有多个DIV)。