2011-05-12 58 views
0

我有其像這樣(在這裏示出的代碼的一部分)限定一個jquery對話框重新定義JavaScript方法體

buttons: { 
        "Opslaan": function() { 
         Opslaan(); 
         $(this).dialog("close"); 
        }, 
        "Annuleren": function() { 
         $(this).dialog("close"); 
        } 
       } 

Opslaan()功能與空體(function Opslaan(){})所定義。

現在的對話是從不同的地方開了,所以我想,在打開的對話框中,定義Opslaan()方法的主體,因爲它必須將數據保存在對話框中,而是被那些不同的地方注入,所以Opslaan(Save)方法一定會讓我有所不同。

有一兩件事我想的是實際的方法傳遞給當我打開它(以便更換靜態opslaan();通話與傳遞方法)的對話框,但我不知道這是可能的

因此,在僞代碼,當用戶點擊按鈕A

  • HTML內容的對話框
  • 重新定義方法A(把正確的JavaScript中的身體還是讓Opslaan方法點法OpslaanA()
  • 打開對話框
+0

'body(function Opslaan(){})'做了什麼? – Val 2011-05-12 13:43:56

+0

對話框被注入一些文本框。該對話框用於4個不同的小碎幕。然後,當用戶點擊Opslaan(意味着'保存')時,它必須調用正確的Save方法來解析注入的html,因爲在所有4種情況下,html是不同的。因此,Opslaan方法查看de對話框中的html,並從textboxes中獲取值,並創建一個webservice調用。所以當你點擊'Opslaan'按鈕時,我想調用該方法的不同實現,具體取決於de對話框中注入的html。那回答你的問題? – Michel 2011-05-12 13:59:37

+0

好吧,我想你在每個頁面上有4種不同的opslaan方法吧?有不同的指示?在這種情況下檢查該窗口.Opslaan首先存在或它是在你的dom之前用戶必須點擊按鈕,我不知道你爲什麼不能使用'serialize()'方法來傳遞你的post/get數據希望能夠幫助一些人,如果沒有,爲每個頁面放置一些示例代碼或者它如何在代碼中工作:) – Val 2011-05-12 14:05:39

回答

0

傳遞唯一函數作爲泛型函數的參數是處理此問題的好方法。這裏有一個簡單的演示:

var save = function(saveFunction) { 
    saveFunction(); 

    // common code 
    alert('common code'); 
} 

var aSaveFunction = function() { 
    alert('aSaveFunction Called.'); 
}; 

$('#one').click(function() { 
    save(aSaveFunction); 
}); 

var aDifferentSaveFunction = function() { 
    alert('aDifferentSaveFunction Called.'); 
}; 

$('#two').click(function() { 
    save(aDifferentSaveFunction); 
}); 

還是在行動中看到的小提琴:http://jsfiddle.net/peteorpeter/7H3mm/3/

而且,以獲得更多關於JavaScript函數的對象:http://www.sergiopereira.com/articles/advjs.html,尋找,「你是什麼意思的函數是一個對象?太?」。