2011-12-18 77 views
0

我有一個彈出式對話框,並且我正在嘗試使其儘可能動態,所以我可以向其發送任何我想要的功能。我想創建一個回調函數,這樣我就可以傳遞我想要的任何函數,並且它將執行我需要的任何操作(在本例中只是打印某些內容以進行測試)。如何在JavaScript中傳遞函數作爲參數

這是彈出窗口時發生的情況所謂:

​​3210

,這裏是激活的彈出功能

$('.delete').click(function(){ 
    var obj="something something"; 
    DisplayPopUp(obj,function(){console.log('going to delete');}); 
}); 

功能不知怎的不工作,我從螢火蟲得到這個錯誤:

Obj is not defined 

很明顯,我不轉移我的功能 - 我該怎麼做?

+0

這是一個錯字,你混合使用'Obj'大寫和小寫? – Li0liQ 2011-12-18 16:36:28

+1

對大寫錯誤的實際提示,以及對[this]的downvotes(http://stackoverflow.com/questions/8508266/does-c-support-member-function-references)。愚蠢的網站! – 2011-12-18 16:37:42

回答

2

你叫callback(Obj),但你的變量名是obj。檢查你的情況。

1

當您調用DisplayPopup()中的回調時,請傳遞參數obj而不是Obj

1

那麼,Obj不是定義。它應該是obj

當您收到錯誤消息時,您應該做的第一件事是閱讀它。 :)

1

我看到多個可能存在的問題與此代碼:

首先,Obj的情況下是錯誤的。它應該是這樣的:

function DisplayPopUp(obj, callback) { 

    //On Action Clicked 
    $('#actionButton').click(function(e){ 
     e.preventDefault(); 
     callback(obj); 
    }); 
} 

但是,第二我不認爲你正在使用事件處理程序。您正在通過點擊處理程序調用DisplayPopup。但是,在該點擊處理程序中,您正在另一個對象上安裝另一個點擊處理程序。那真的是你想要做的嗎?除非您遺留了一堆代碼,這些代碼會創建/銷燬actionButton或取消綁定點擊處理程序,否則每次單擊刪除按鈕時,您都可以輕鬆地在#actionButton上結束多個點擊處理程序。

+0

處理程序有不同的元素......如果我不得不猜測,我會說他正在實施「你確定嗎?」框。 – 2011-12-18 16:42:37

+0

我知道他們在不同的元素。但假設''.delete''可以被多次點擊,它們將在'#actionButton'上結束多個點擊處理程序,因爲每次調用時會附加一個新的處理程序。這可能是由代碼的其餘部分處理的,但由於我們看不到,我認爲我應該將其作爲可能的問題提及。 – jfriend00 2011-12-18 16:45:10

+0

我將繼續並假設在'DisplayPopUp'的間隙中創建'#actionButton'。 – 2011-12-18 16:46:09

相關問題