div完成动画后的事件?

时间:2012-04-04 11:12:59

标签: javascript jquery

如何在某个元素完成动画后运行函数?这是一个像动画一样的向下滑动,元素被隐藏,当点击某些东西时,它会通过向下滑动其内容(+高度)而变得可见。

我无法控制该元素的动画功能,因此我无法使用$ .animate函数中的回调选项......

现在我有类似

的东西
$('.trigger').click(function(){  // <-- "trigger" will make the element animate 
  setTimeout(myfunction, 500);
});

哪个有效,但我不喜欢它,感觉hacky

2 个答案:

答案 0 :(得分:3)

如果你正在使用jQuery 1.5+,你可以使用jQuery promise()方法:http://jsfiddle.net/rGBk7/

e.g。

/* do animation */
$("div").animate({ 'marginLeft' : '300px' }, 1000);

/* attach a promise to animated element/s */    
$("div").promise().done(function() {
    alert("animation end");
});

请参阅http://api.jquery.com/promise/

答案 1 :(得分:1)

你的意思是:


$("div").queue(function(){
    your_function();
});

它将在动画队列完成后执行