Javascript 在上一个(未知)动画/效果完成后,如何在jQuery中运行代码?

Javascript 在上一个(未知)动画/效果完成后,如何在jQuery中运行代码?,javascript,jquery,Javascript,Jquery,我想在前面的效果/移动完成后隐藏DIV元素。如果我知道序列,我就可以将代码添加到回调函数中,我给.animate()(例如)。但是,在这种情况下,我无法访问该状态(它可能会或可能不会经历动画/效果)。因此,两个动画/效果由两个不同的事件触发(例如,按钮单击) 因此,我会在DIV元素完成当前动画/效果后运行淡出。使用jQuery可以做到这一点吗 谢谢 编辑:因此目标是将当前动作(例如fadeOut()代码)代码与以前的动画代码解耦 EDIT2:让问题更清楚。您必须向我们展示之前的动画代码才能获得具

我想在前面的效果/移动完成后隐藏DIV元素。如果我知道序列,我就可以将代码添加到回调函数中,我给
.animate()
(例如)。但是,在这种情况下,我无法访问该状态(它可能会或可能不会经历动画/效果)。因此,两个动画/效果由两个不同的事件触发(例如,按钮单击)

因此,我会在DIV元素完成当前动画/效果后运行淡出。使用jQuery可以做到这一点吗

谢谢

编辑:因此目标是将当前动作(例如fadeOut()代码)代码与以前的动画代码解耦


EDIT2:让问题更清楚。

您必须向我们展示之前的动画代码才能获得具体建议。在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."});

我认为您正在动画调用中查找完整的函数参数:


如何创建自定义事件并使用live()绑定到它


$(“p”).live(“myCustomEvent”,函数(e、myName、myValue){
$('#div').hide();
});
$(“按钮”)。单击(函数(){
$(“p”)。触发器(“myCustomEvent”);
});
只要调用
.fadeOut()
,它就会自动添加到fx队列的末尾:


很简单,只需将动画排队即可

$("#myDiv").queue(function(){
    $(this).fadeOut();
});
它将在动画队列完成后执行。
因此,您可以在动画队列之后和淡出之前添加代码并执行任何操作…

为什么您没有访问序列的权限?还有,是什么让你说它是jQuery而不是CSS3动画?@JoeyVanOmmen我知道它是jQuery,因为我写了它:)。问题是,上一个动画是由不同于下一个动画的事件触发的(例如,两次单独的按钮单击)。谢谢,我不知道jQuery可以做到这一点,这就解决了问题。我应该阅读更多关于fx队列的内容。此外,我可以给.fadeOut()一个回调,以便在fadeOut之后运行其他代码。
<script>
$("p").live("myCustomEvent", function(e, myName, myValue) {
  $('#div').hide();

});
$("button").click(function () {
  $("p").trigger("myCustomEvent");
});
</script>
$("#myDiv").queue(function(){
    $(this).fadeOut();
});