.animate()的回调错误?

我正在尝试制作一些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); } 

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

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

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

应该:

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

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