Ошибка с обратным вызовом .animate ()? - PullRequest
1 голос
/ 17 декабря 2010

Я пытаюсь сделать 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);
}

Проблема в том, что когда я помещаю alert () в функцию обратного вызова (constructMenu), она работает отлично, анимация завершается, а затем появляются предупреждения. Когда я вхожу в функцию, она начинается в начале, до завершения анимации. Это ошибка, или я делаю что-то не так?

1 Ответ

8 голосов
/ 17 декабря 2010

Вы должны удалить () из функции обратного вызова, потому что в противном случае она вызывается немедленно:

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

Должно быть:

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

Поэтому вместо нее укажите функцию обратного вызова как constructMenuиз constructMenu()

...