2014-01-08 60 views
1

我有一個網站,其中有很多確認頁面,需要一個對話窗口。我想知道是否有更好的方法來編寫我的代碼,這樣我就不必每次都拼出所有的對話框參數。每個對話框可能有一個不同的東西。通常完整的按鈕是不同的功能。多次使用jQuery對話框,參數略有不同

例如:

$('#dialogA').dialog(
    { 
      autoOpen:false, 
      width: 800, 
      modal: true, 
      resizable: false, 
      closeOnEscape: false, 
      buttons: 
    { 
      "Complete": function() 
      { 
       //DO SOMETHING FOR A(possible print results of something) 
      } 
    } 
    }); 

和另一

$('#dialogB').dialog(
    { 
      autoOpen:false, 
      width: 800, 
      modal: true, 
      resizable: false, 
      closeOnEscape: false, 
      buttons: 
    { 
      "Complete": function() 
      { 
       //DO SOMETHING FOR B (possibly some ajax call) 
      } 
    } 
    }); 

,這樣唯一改變的是完整的按鈕做什麼。在外行人的話來說我想是我想設置一個變量包含了所有的對話框參數....

+0

您是否嘗試過使用Complete:function(param)並存儲自我?並在Complete函數內部使用解析器(即if或switch)來確定它應該如何工作? – nocturns2

回答

1

擴展jQuery的:

(function ($) { 
    $.fn.extend({ 
    confirmDialog: function (options) { 
     var defaults = { 
      autoOpen:false, 
      width: 800, 
      modal: true, 
      resizable: false, 
      closeOnEscape: false, 
      buttons: 
     }; 

     var options = $.extend(defaults, options); 
     $(this).dialog(options); 
     }   
    } 
})(jQuery); 

,並調用它像這樣:

$('#dialogB').dialog({Complete: function() { … }; }); 

你當調用對話框時,也可以覆蓋默認值...