Javascript 在.animate()的回调中出错?

Javascript 在.animate()的回调中出错?,javascript,jquery,jquery-animate,Javascript,Jquery,Jquery Animate,我试图制作一些div来制作动画,然后在回调中调用另一个函数。没什么难的。代码如下: function transfertMenu(){ var chosenOption = this.firstChild.firstChild.id; $('#leftMenucontent').animate({ left:'0px' }, 500, constructMenu()); $('#leftMenucontent > ul

我试图制作一些div来制作动画,然后在回调中调用另一个函数。没什么难的。代码如下:

function transfertMenu(){
    var chosenOption = this.firstChild.firstChild.id;
        $('#leftMenucontent').animate({
            left:'0px'
        }, 500, constructMenu());
    $('#leftMenucontent > ul > li').remove();
    chooseMenu(chosenOption);
}
并尝试

function transfertMenu(){
    var chosenOption = this.firstChild.firstChild.id;
        $('#leftMenucontent').animate({
            left:'0px'
        }, 500, function() {
        constructMenu();
    });
    $('#leftMenucontent > ul > li').remove();
    chooseMenu(chosenOption);
}
问题是,当我在回调菜单中放置警报时,它工作正常,动画完成,然后警报弹出。当我输入一个函数时,它会在动画完成之前从开头开始。这是一个bug,还是我做错了什么?

您应该从回调函数中删除,否则它会立即被调用:

 $('#leftMenucontent').animate({
    left:'0px'
 }, 500, constructMenu());
------problem --------^
应该是:

 $('#leftMenucontent').animate({
    left:'0px'
 }, 500, constructMenu);
因此,将回调函数指定为constructMenu,而不是constructMenu。您应该从回调函数中删除它,否则它会立即被调用:

 $('#leftMenucontent').animate({
    left:'0px'
 }, 500, constructMenu());
------problem --------^
应该是:

 $('#leftMenucontent').animate({
    left:'0px'
 }, 500, constructMenu);

因此,将回调函数指定为constructMenu,而不是constructMenu

你说得对!谢谢。但是如果我想传递参数呢?我能加上这个吗?你说得对!谢谢。但是如果我想传递参数呢?我可以加上这个吗?