2011-04-14 45 views
2

我希望能夠將回調函數綁定到先前定義的函數 並且能夠使用該函數範圍中定義的兩個變量。jQuery,將回調綁定到任何函數

它應該是這樣的:

function mainFunction(){ 
    var localForMain; 
} 

$(document).ready(function(){ 

    // bind a call back method to the 'mainFunction' 
    $(mainFunction).bindCallback(function(){ 

     // ...use the localForMain variable HERE; 

    }); 


}); 

是否有可能實現這樣的事情?

+0

該函數的回調函數應該如何工作?應該在調用'mainFunction'時調用它嗎?這不可能。 – 2011-04-14 10:09:34

+0

是的,它應該在mainFunction執行後立即觸發 – Antagonist 2011-04-14 10:43:45

回答

0

要達到此目的,您需要在mainFunction的範圍內。它可以做很容易:

function mainFunction(){ 
    var localForMain; 


$(document).ready(function(){ 

    // bind a call back method to the 'mainFunction' 
    $(mainFunction).bindCallback(function(){ 

     // NOW YOU CAN USE the localForMain variable HERE; 

    }); 


}); 

}

+1

'jQuery#bindCallback'不存在,因此此代碼示例不起作用。 – 2011-04-14 10:09:08

+2

這裏是交易,我有多個文件,我'覆蓋'相同的方法(爲不同頁面重複定義它,具有稍微不同的功能),所以我想寫一個其他方法來'擴展'功能。 – Antagonist 2011-04-14 10:10:28

+1

@Antagonist:也許你必須重新考慮你的設計。你可以例如創建一個對象,該對象具有調用由其他代碼定義的子功能的「主」功能。 – 2011-04-14 10:25:46

2

它是不可能綁定回撥功能以這樣一種方式。你必須在函數內編程。

function SampleWithCallBack(callbackfunction) 
{ 
     code here 
     callbackfunction(params); 
} 

關於在上下文中使用定義的變量。你應該在參數中傳遞變量或者在全局上定義它,這不是一個好方法

+0

+1我認爲就是這樣。 – 2011-04-14 10:10:56

+0

其實這是我試圖避免的解決方案。 我的想法/問題是,以這種方式來擴展該函數直接寫入它的功能。 – Antagonist 2011-04-14 10:19:04