2012-07-22 85 views
0

我正在使用widget factory機制創建jQuery對話框。如何在沒有widget工廠的情況下創建jQuery對話框?

 
function ($) { 

    function myDialogDiv() {...} // create all required HTML for the dialog 

    $.widget("myApp.myDialog", { 

     _create:function() { 
      var div = myDialogDiv(); 
      var props = {autoOpen:false, height:'200', width:'30%'}; 
      var onClose = function() {}; 
      $(div).dialog(props, onClose); 
     }, 

     _init:function() {$('#myDialog').dialog('open');} 
    }) 

}(jQuery)) 

... 

// open the dialog on button click 
$('.myDialogButton').bind("click", function(){$(this).myDialog();}); 

它工作正常。現在我想知道是否可以創建jQuery對話框而不是widget factory

回答

1

當然,你可以寫自己的對話框庫或使用另外一個,有它自己的初始化方案;-)

如果做不到這一點,雖然,沒有。 jQuery對話框(就像所有的jQuery UI小部件一樣)需要一些初始化參數,你可以在每次需要小部件時重現它們,或者你可以使用「小部件工廠」風格來隱藏構建器中的所有初始化內容功能。另外,你必須記住,就像jQuery一樣,jQuery UI並沒有試圖爲你做所有的事情:他們故意將很多東西留給開發者,比如說。將按鈕連接到對話框的生成。這在你思考時很有意義,因爲其他人可能會使用A標籤,別人使用DIV等等。圖書館的目標僅僅是爲了避免重做常見的東西,而不是爲了避免寫任何東西代碼在你的最後。

,我可以看到的唯一選擇是一種各佔一半的方式,在那裏你重新讓你的對話框每次,但使用全局組選項,以節省重複:

var GLOBAL_DIALOG_PROPS = {autoOpen:false, height:'200', width:'30%'} 
function dialogButtonClickHandler() { 
    $(this).myDialog().dialog(GLOBAL_DIALOG_PROPS, onClose).dialog('open'); 
} 
$('.myDialogButton').bind("click", dialogButtonClickHandler); 

但在一天結束時,必須完成初始化工作,如果你要在代碼中執行多個地方,聰明的事情就是幹掉它並將常見位存儲在某處(如在你的widget工廠中)。

相關問題