2011-05-09 77 views
2

當使用jQuery UI按鈕的模式可以是初始化後,建立像這樣:jQueryUI的模態 - 添加多個按鈕

$(".selector").dialog("option", "buttons", { "Ok": function() { $(this).dialog("close"); } }); 

但是我想要做的是添加多個按鈕,依賴於邏輯條件:

if (canClose){ 
    $(".selector").dialog("option", "buttons", { "Ok": function() { $(this).dialog("close"); } }); 
} 

if (canAlert){ 
    $(".selector").dialog("option", "buttons", { "Ok": function() { alert('Hello'); } }); 
} 

但是,上面的代碼將無法正常工作,因爲它每次都重置按鈕數組。

如何在不丟失任何現有按鈕的情況下使用邏輯添加X個按鈕?

回答

3

試試這樣說:

var buttons = {}; 

if (canClose) { 
    buttons.Close = function() { $(this).dialog("close"); } 
} 

if (canAlert) { 
    buttons.Alert = function() { alert('Hello'); } 
} 

$(".selector").dialog("option", "buttons", buttons); 

因此,你只有一次創建對話框。當然,按鈕需要兩個不同的名字,否則第二個會覆蓋第一個。但是,沒有幾個具有相同文本的按鈕,這只是良好的GUI設計。 ;)

1

使用buttons array選項創建兩個按鈕:

if (canClose && canAlert) 
    $(".selector").dialog("option", "buttons", [ 
     { 
      text: "Ok", 
      click: function() { $(this).dialog("close"); } 
     }, 
     { 
      text: "Ok", 
      click: function() { alert('Hello'); } 
     } 
    ]); 
+0

@約西亞-Ruddell我的代碼後,我將讓所有的四種可能按鈕組合通過邏輯。無按鈕,一個按鈕,另一個按鈕或兩者。 – 2011-05-10 08:30:57

1

我已經成功通過創建一個數組前期,然後模態按鈕屬性分配這個實現我的目標:

var buttons = new Array(); 

if (occurance.canEdit){ 
    buttons[buttons.length] = { text: "Edit", click: function(){ editOccurance(data[0],data[1]); } }; 
} 

if (occurance.canDelete){ 
    buttons[buttons.length] = { text: "Delete", click: function(){ deleteOccurance(data[0],data[1]); } }; 
} 

$("#dialogOccurance").dialog("option", "buttons", buttons);