jQuery模态对话框按钮文本

8

基于下面的代码展示一个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");
            }
        }
    });
}
4个回答

13

根据jQuery UI文档的说法,按钮名称来自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

2

在初始化对话框后,您需要添加以下内容:

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

您可能希望将b重命名为更具描述性和独特性的名称。


0

我认为您在配置数组中缺少参数。应该有类似于

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

没有buttonText选项。根据文档,属性键是按钮的文本 - Matt Ball

0

{b:'blah'} 的意思是将b作为变量名。 手动定义数组可能会解决问题,尽管我无法想象没有特殊语法的情况。 var buttons = {}; buttons[b] = function() { }; $().dialog({buttons: buttons});


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接