我想在我的页面上闪现成功消息。
我使用jQuery fadeOut
方法淡化然后删除元素。我可以增加持续时间以使其持续更长时间,但这看起来很奇怪。
我想要的是让元素显示五秒钟,然后快速淡化,最后被删除。
如何使用jQuery为此设置动画?
答案 0 :(得分:44)
jQuery 1.4中的新delay()
函数应该可以解决问题。
$('#foo').fadeIn(200).delay(5000).fadeOut(200).remove();
答案 1 :(得分:11)
使用setTimeout(function(){$elem.hide();}, 5000);
$elem
是您要隐藏的元素,5000
是延迟(以毫秒为单位)。实际上,您可以在setTimeout()
的调用中使用任何函数,该代码只是为了简单起见而定义了一个小的匿名函数。
答案 2 :(得分:8)
虽然@John Sheehan的方法有效,但你会遇到IE7中的jQuery fadeIn/fadeOut ClearType glitch。就个人而言,我选择@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 plug-in正是您所需要的:
$('#element').fadeOut({
speed: 'fast',
preDelay: 5000
});
答案 3 :(得分:6)
对于纯jQuery方法,你可以做
$("#element").animate({opacity: 1.0}, 5000).fadeOut();
这是一个黑客,但它完成了工作
答案 4 :(得分:4)
var $msg = $('#msg-container-id');
$msg.fadeIn(function(){
setTimeout(function(){
$msg.fadeOut(function(){
$msg.remove();
});
},5000);
});
答案 5 :(得分:2)
根据dansays的评论,以下似乎效果非常好:
$('#thing') .animate({dummy:1}, 2000)
.animate({ etc ... });
答案 6 :(得分:0)
remove()
立即运行,div在任何动画发生之前消失。
然而,以下工作(通过省略remove()
方法):
$('#foo').fadeIn(500).delay(5000).fadeOut(500);
我不介意页面上是否有隐藏的DIV(不管怎样,不应该有多少)。
答案 7 :(得分:0)
1.6.2的更新
Nathan Long的回答会导致元素弹出而不遵守延迟或fadeOut
。
这有效:
$('#foo').delay(2000).fadeOut(2000);