2010-12-17 4 views
1

Ich versuche, einige Div zu animieren, dann im Callback eine andere Funktion aufrufen. Nichts Hartes. Hier ist der Code:Fehler mit dem Rückruf von .animate()?

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

und versuchte

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

Das Problem, dass, wenn ich einen Alarm setzen() in der Callback (constructMenu) es funktioniert perfekt, die Animation beendet ist, dann werden die Warnungen erscheint . Wenn ich eine Funktion eingabe, beginnt sie am Anfang, bevor die Animation abgeschlossen ist. Ist es ein Fehler, oder mache ich etwas falsch?

Antwort

8

Sie () von Callback-Funktion entfernen sollte, weil sonst sofort aufgerufen wird:

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

werden sollten:

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

So Ihre Callback-Funktion als constructMenu angeben statt constructMenu()

+0

Sie‘ hast recht! Danke. Aber was, wenn ich Parameter übergeben möchte? Kann ich das() hinzufügen? – Elggetto