jQuery模式对话框按钮文本

时间:2010-10-25 15:28:12

标签: jquery jquery-ui modal-dialog jquery-ui-dialog

根据下面的代码显示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 个答案:

答案 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
}