我想在我的页面上显示一个成功消息。
我正在使用jQuery的fadeOut
方法来淡出并删除该元素。我可以增加持续时间使其持续更长时间,但这看起来很奇怪。
我希望发生的是,该元素显示五秒钟,然后快速淡出,并最终被删除。
如何使用jQuery对此进行动画处理?
我想在我的页面上显示一个成功消息。
我正在使用jQuery的fadeOut
方法来淡出并删除该元素。我可以增加持续时间使其持续更长时间,但这看起来很奇怪。
我希望发生的是,该元素显示五秒钟,然后快速淡出,并最终被删除。
如何使用jQuery对此进行动画处理?
jQuery 1.4中的新delay()
函数应该可以实现此效果。
$('#foo').fadeIn(200).delay(5000).fadeOut(200).remove();
使用setTimeout(function(){$elem.hide();}, 5000);
其中$elem
表示您想要隐藏的元素,5000
表示以毫秒为单位的延迟时间。实际上,您可以在setTimeout()
调用中使用任何函数,上述代码只是定义了一个小的匿名函数。
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();
这是一种hack方法,但它可以完成工作。
var $msg = $('#msg-container-id');
$msg.fadeIn(function(){
setTimeout(function(){
$msg.fadeOut(function(){
$msg.remove();
});
},5000);
});
继dansays的评论之后,以下内容似乎完美地起作用:
$('#thing') .animate({dummy:1}, 2000)
.animate({ etc ... });
dansays的答案对我不起作用。由于某种原因,remove()
立即运行,而在任何动画发生之前,div就消失了。
然而,以下方法可以正常工作(省略remove()
方法):
$('#foo').fadeIn(500).delay(5000).fadeOut(500);
页面上有隐藏的DIV我并不介意(总共也不应该超过几个)。
1.6.2 更新
Nathan Long 的答案会导致元素在不遵守延迟或 fadeOut
的情况下弹出。
这个可以解决:
$('#foo').delay(2000).fadeOut(2000);