我希望在之前的效果/动作完成后隐藏DIV元素。如果我知道序列,我可以将代码添加到我给.animate()
的回调函数中(例如)。但是在这种情况下,我无法访问该状态(它可能会也可能不会通过动画/效果)。因此,两个动画/效果由两个不同的事件(例如按钮点击)触发。
所以我会在DIV元素完成当前动画/效果后运行fadeOut。这可以用jQuery吗?
感谢。
编辑:所以目标是将当前动作(例如fadeOut())与前一动画代码分离。
EDIT2:让问题更清晰。
答案 0 :(得分:2)
只需拨打.fadeOut()
,它就会自动添加到fx队列的末尾:
答案 1 :(得分:0)
您必须向我们展示以前的动画代码才能获得具体建议。在jQuery中,动画效果可以链接在一起,jQuery会自动将它们一个接一个地排队。或者,您可以使用一个操作的完成功能来触发下一个操作的开始。
示例:
$("#item").fadeIn(1000).delay(1000).fadeOut(500);
$("#item").animate({
opacity: 0.75,
left: '+=250',
}, 5000).delay(1000).fadeOut(500);
.animate()
方法还有一个完成功能,可以在动画完成时用来触发任何操作,但如果下一个操作本身是一个动画,则更容易使用上面的自动链接而不是完成功能:
$("#item").animate({
opacity: 0.75,
left: '+=250',
}, 5000, function() {alert("Animation finished."});
答案 2 :(得分:0)
我认为你正在寻找动画调用中的完整函数参数:
http://api.jquery.com/animate/
$('#clickme').click(function() {
$('#book').animate({
opacity: 0.25,
left: '+=50',
height: 'toggle'
}, 5000, function() {
// Animation complete.
});
});
答案 3 :(得分:0)
如何使用live()创建自定义事件并绑定它?
<script>
$("p").live("myCustomEvent", function(e, myName, myValue) {
$('#div').hide();
});
$("button").click(function () {
$("p").trigger("myCustomEvent");
});
</script>
答案 4 :(得分:0)
这很简单,只需将动画排队
$("#myDiv").queue(function(){
$(this).fadeOut();
});
它将在动画队列完成后执行。 因此,您可以在动画队列之后和fadeOut之前添加代码并执行任何操作...