根据下面的代码显示JQuery对话框,按钮文本显示为文字“b”而不是变量b的值。
即: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");
}
}
});
}
答案 0 :(得分: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
的等效。
答案 1 :(得分:2)
这是您在初始化对话框时需要添加的内容:
$('div.ui-dialog-buttonpane button:contains(b)').empty().html(b);
你可能想要将b重命名为更具描述性和独特性的东西。
答案 2 :(得分:0)
{b:'blah'}意思是它将b作为变量名称。 手动定义数组可以修复它,虽然我无法想象没有特殊的语法 var buttons = {}; buttons [b] = function(){}; $()。dialog({buttons:buttons});
答案 3 :(得分:0)
我认为你在配置数组中缺少参数。应该有像
这样的东西buttons: {
b : function () {
$(this).dialog("close");
},
buttonText: b
}