所有其他动画完成后执行功能

时间:2011-05-18 19:25:03

标签: jquery

我试图在所有其他动画完成后显示div。我现在的代码将同时完成。

$(document).ready(function(){
$('#header').hide();

$('.contactl').click(function(){$('#content').stop().scrollTo('#contact',1250,{easing:'easeinout'});
});

$('#menu').click(function() {$('#header').fadeIn(4000)});

因此菜单必须在联系动画后淡入。它们处于单独的功能中,否则我必须在所有菜单项功能中包含代码的菜单部分。

可以这样做吗?如果是这样,怎么样?

4 个答案:

答案 0 :(得分:3)

您可以在所有jQuery动画函数中指定回调参数。您的问题的解决方案是将动画之后要执行的代码放在函数中,并将该函数作为回调传递给最终动画。<​​/ p>

编辑:示例如下:

function alertAfterAnimation() {
    alert("Animation is finished!");
}

// Hide myElement, then pop up a message when it's gone
$.hide('#myElement', 'slow', alertAfterAnimation);

答案 1 :(得分:0)

我确定其他答案都是正确的,但是想指出自jQuery 1.5以来发布的新功能:

http://api.jquery.com/deferred.promise/

这允许您以更明确的方式链接事件。可能性是无穷无尽的,但将其应用于动画绝对是可能的。

答案 2 :(得分:0)

类似于Milimetric,另一个有价值的特征是Queue:

http://api.jquery.com/queue/

此页面上的示例应与您正在寻找的内容非常接近。

您可能采取的一般方法是在动画上完成一个公共回调函数,当动画队列为零时,您可以继续做任何您喜欢的事情。

答案 3 :(得分:-4)

经过广泛的谷歌搜索,我找到了一个简单的解决方案。 添加...     .delay(800) 解决了这个问题。