2013-02-02 47 views
1

我正在使用JQuery對話框創建一個對話框插件。以下是可以傳遞的參數。它包括用戶想要添加的按鈕文本以及回調函數名稱,該名稱將在點擊該按鈕時執行。將函數名附加到JQuery對話框中按鈕

var settings = $.extend({ 
     message: 'Your action is successful', 
     title: 'Message', 
     showButton: true, 
     buttonText: 'OK', 
     onButtonClick: 'OnButtonClick', 
     allowClose: true 
    }, options); 

我面臨的問題是附加該函數名稱來點擊按鈕的事件。我正在嘗試做下面的事情,但會引發錯誤。

$('#dialog-message').dialog({ 
     buttons: [{ 
      text: settings.buttonText, 
      click: window[settings.onButtonClick]() 

     }], 
     closeOnEscape: true, 
     close: function (e) { 
      $(this).empty(); 
      $(this).dialog('destroy'); 
    } 
    }); 

任何建議如何將該函數名附加到單擊事件,因爲我只有函數名。

回答

0

插件的調用者應該爲onButtonClick選項提供回調,而不是字符串。像這樣:

function OnButtonClick(){ 
    //does some cool stuff 
} 

var settings = $.extend({ 
    message: 'Your action is successful', 
    title: 'Message', 
    showButton: true, 
    buttonText: 'OK', 
    onButtonClick: OnButtonClick, 
    allowClose: true 
}, options); 

然後你可以綁定傳入的功能是這樣的:

$('#dialog-message').dialog({ 
    buttons: [{ 
     text: settings.buttonText, 
     click: settings.onButtonClick 
    }], 
    closeOnEscape: true, 
    close: function (e) { 
     $(this).empty(); 
     $(this).dialog('destroy'); 
    } 
}); 

這是可能的,因爲onButtonClick變量現在保存到你的插件的用戶提供的回調引用(而不是字符串)通過settings他們用來初始化插件。

希望有幫助!

+0

謝謝。它爲我工作。 – Deb

+0

@ user2009755:很高興幫助。歡迎來到StackOverflow!如果這有幫助,你可以將其標記爲答案。關於頁面(http://stackoverflow.com/about)將有助於理解本網站的工作原理! –

相關問題