动画单个元素后的两个回调

时间:2014-07-16 12:43:09

标签: jquery animation callback

我正在摸不着为什么在运行此功能时我会收到两个回调。

lE = $(this).clone().appendTo('body');

// Hide submenu
$('nav>ul>li>ul').fadeOut(100, function() {
    // Animate clone
    $(lE).animate({ 'top': '160px' }, 100, function() {

        console.log('aaa'); // PRINTS TWICE IN CONSOLE

        $(lE).animate({ 'left': '150px' }, 300, function() {
            $(lE).addClass('lE');
        });
    });
});

正如您所看到的,我首先为lE分配一个克隆。当然,lE此时只能是单个元素吗?

然后我继续在彼此内运行三个动画,但第二个动画被召回两次。我无法理解为什么。

1 个答案:

答案 0 :(得分:-1)

我之前使用多个链回调时遇到了问题。尝试使用setTimeout而不是函数回调。这种方法以前对我有用。

lE = $(this).clone().appendTo('body');

$('nav>ul>li>ul').fadeOut(100);

setTimeout(function() {
    $(lE).animate({ 'top': '160px' }, 100);
},100);

setTimeout(function() {
    $(lE).animate({ 'left': '150px' }, 300, function() {
        $(lE).addClass('lE');
    });
},200);