.animate()的回调错误?

Elg*_*tto 1 javascript jquery jquery-animate

我正在尝试制作一些div来制作动画,然后在回调中调用另一个函数.没什么难的.这是代码:

function transfertMenu(){
    var chosenOption = this.firstChild.firstChild.id;
        $('#leftMenucontent').animate({
            left:'0px'
        }, 500, constructMenu());
    $('#leftMenucontent > ul > li').remove();
    chooseMenu(chosenOption);
}
Run Code Online (Sandbox Code Playgroud)

并尝试过

function transfertMenu(){
    var chosenOption = this.firstChild.firstChild.id;
        $('#leftMenucontent').animate({
            left:'0px'
        }, 500, function() {
        constructMenu();
    });
    $('#leftMenucontent > ul > li').remove();
    chooseMenu(chosenOption);
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我在回调(constructMenu)中放置一个alert()时,它完美地运行,动画结束,然后弹出警报.当我输入一个函数时,它会在动画完成之前从头开始.这是一个错误,还是我做错了什么?

Sar*_*raz 8

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

 $('#leftMenucontent').animate({
    left:'0px'
 }, 500, constructMenu());
------problem --------^
Run Code Online (Sandbox Code Playgroud)

应该:

 $('#leftMenucontent').animate({
    left:'0px'
 }, 500, constructMenu);
Run Code Online (Sandbox Code Playgroud)

因此,请指定您的回调函数,constructMenu而不是constructMenu()