2010-12-17 76 views
1

我想讓一些div動畫,然後在回調中調用另一個函數。沒什麼難的。下面的代碼:.animate()的回調錯誤?

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)它完美地把警報(),在動畫完成,然後警報彈出。當我輸入一個函數時,它從開始處開始,在動畫完成之前。這是一個錯誤,或者我做錯了什麼?

回答

8

你應該從回調函數刪除(),否則它就會馬上叫:

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

應該是:

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

所以指定的回調函數作爲constructMenu代替constructMenu()

+0

你」對了!謝謝。但是如果我想傳遞參數呢?我可以添加()嗎? – Elggetto 2010-12-17 18:45:24