2012-05-25 86 views
1

我將一些參數傳遞給一個javascript函數,該函數爲用戶填充表單創建一個表單。其中包含另外兩個函數,它們分別處理保存或取消表格。取消功能需要使用兩個參數來確定要構建的實體列表。問題在於參數。在表單構建函數中,如果我將取消函數附加到新創建的取消按鈕而沒有提供任何參數,則函數按鈕可以正常工作,但由於缺少參數而會生成一個空列表。但是,如果我將函數附加到參數中,則該函數會在創建頁面時立即觸發,而不是在單擊該按鈕時觸發。我曾嘗試以幾種不同的方式附加偵聽器,包括javascript,jquery甚至yahoo.util。在其他實例中使用參數調用時,所有功能都可以在cancel函數中正常工作。有關爲什麼函數會在參數傳遞時提前觸發的想法?當參數通過時事件監聽器發射得太早

這裏是一些sudo代碼,我已經附加了偶數聽衆的不同方式。

function buildform(formData, saveFunction, CancelFunction, p1, p2){ 
     $("#cancelButton").live("click", cancelFunction(p1, p2); 
     YAHOO.util.Event.on("cancelButton", "click", cancelFuntion(p1, p2)); 
     cancelButton.setAttribute("onClick",cancelFunction(p1, p2); 
} 
+1

您應該始終如一地使用'on',而不是使用'live',它被廢棄了。 – apsillers

回答

2

你必須來包裝你的方法在功能塊調用,否則會被立即計算:

$("#cancelButton").live("click", function() { cancelFunction(p1, p2); });