2010-10-25 157 views
8

根據下面的代碼顯示JQuery對話框,按鈕文本顯示爲文字「b」,而不是變量b的值。jQuery模態對話框按鈕文本

即:showWarningDialog('myBody', 'myTitle', 'go')顯示一個對話框,其中帶有標記爲b的按鈕而不是go

你怎麼能得到go出現?

function showWarningDialog(theBody, theTitle, buttonText) { 
    var t = "Warning"; 
    if (theTitle != null) { 
     t = theTitle; 
    } 

    var b = "Ok"; 
    if (buttonText != null) { 
     b = buttonText; 
    } 

    $("#div-dialog-warning div").text(theBody); 

    $("#div-dialog-warning").dialog({ 
     title: t, 
     resizable: false, 
     height: 160, 
     modal: true, 
     buttons: { 
      b : function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
} 

回答

13

As per the jQuery UI docs,按鈕的名字來自於buttons對象按鈕的關鍵。在這種情況下,更換該位:

$("#div-dialog-warning").dialog({ 
    title: t, 
    resizable: false, 
    height: 160, 
    modal: true, 
    buttons: { 
     b : function() { 
      $(this).dialog("close"); 
     } 
    } 
}); 

與此:

var buttonOpts = {}; 
buttonOpts[b] = function() { 
    $(this).dialog("close"); 
}; 
$("#div-dialog-warning").dialog({ 
    title: t, 
    resizable: false, 
    height: 160, 
    modal: true, 
    buttons: buttonOpts 
}); 

你必須把b作爲一個變量,因此使用buttonOpts[b]而不是你做了什麼,這是的相當於使用buttonOpts.b

0

{b:'blah'} wil表示它將b作爲變量名稱。 手動定義數組可以修復它,雖然我無法想象有沒有一個特殊的語法 var buttons = {}; buttons [b] = function(){}; $()。dialog({buttons:buttons});

0

我想你在congig數組中缺少參數。應該有類似

buttons: { 
     b : function() { 
      $(this).dialog("close"); 
     }, 
     buttonText: b 
} 
+0

沒有'buttonText'選項。根據文檔,「屬性鍵是按鈕的文本」。 – 2010-10-25 15:38:41

2

這裏就是你需要添加AFTE ryou初始化你的對話內容:

$('div.ui-dialog-buttonpane button:contains(b)').empty().html(b); 

你可能要重新命名b可能是東西多一點的描述和獨特的雖然。