Javascript JQuery对话框-不使用键设置按钮文本

Javascript JQuery对话框-不使用键设置按钮文本,javascript,jquery,jquery-ui,jquery-ui-dialog,Javascript,Jquery,Jquery Ui,Jquery Ui Dialog,我需要为JQuery对话框的按钮文本提供本地化,但是JQuery对话框通常使用按钮文本键: $(DialogDiv).dialog({ bgiframe: true, resizable: false, buttons: { Save : saveCallback, Cancel : cancelCallback} }); 有没有一种方法可以单独指定文本而不使用键作为文本值?目前我正在使用它,但是我不喜欢使用本地化值作为键: var buttonCallbacks =

我需要为JQuery对话框的按钮文本提供本地化,但是JQuery对话框通常使用按钮文本键:

$(DialogDiv).dialog({
    bgiframe: true,
    resizable: false,
    buttons: { Save : saveCallback, Cancel : cancelCallback}
});
有没有一种方法可以单独指定文本而不使用键作为文本值?目前我正在使用它,但是我不喜欢使用本地化值作为键:

var buttonCallbacks = {};       
buttonCallbacks[com.i18n.getText("Save")] = function() {};
buttonCallbacks[com.i18n.getText("Cancel")] = function() {};

$(DialogDiv).dialog({
    bgiframe: true,
    resizable: false,
    buttons: buttonCallbacks 
});
谢谢。

刚刚在源代码处达到峰值(1.8):

var按钮=$(“”)
.text(name)//name是每个
.单击(函数(){fn.apply(self.element[0],参数);})
.附录(uiDialogButtonPane);
所以看起来不像


现在,我假设您可以添加一个修改按钮的后显示回调。这似乎很有黑客味-我建议您目前的做法。

我可以告诉您,一旦初始化完成,如何事后进行更改,但在构造函数中进行更改需要对jQuery UI库进行根本性的更改,这当然是可行的,因为它是开源的。当前未向您提供该功能

相反,我建议在对话框初始化后执行所需的更改:

$('.myDialogSelector').parent()
    .find('span.ui-button-text:contains("OriginalNameFromKey")')
    .html("New Button Text");
看到一把正在工作的小提琴

我可以问一下为什么构造器的格式对你来说很重要吗?我很难想象用例的细节。构建
按钮映射的方式似乎很好。

如果查看“for”对话框,您会注意到列出的第二种格式接受对象数组:

$(DialogDiv).dialog({
    bgiframe: true,
    resizable: false,
    buttons: [ { 
        text: com.i18n.getText("Save"),
        click: saveCallback
      }, {
        text: com.i18n.getText("Cancel"),
        click: cancelCallback
      }
    ]
});

感谢您的建议和示例,但是设置此post initilization似乎有点僵化,并且容易出现错误(例如,突然更新了一个键,而没有更新匹配的post setter选择器)。我不太喜欢当前解决方案的原因是本地化例程返回副本的可能性很小。感谢源代码示例此源代码在1.8.5及更高版本中有所不同:--它现在可以采用数组
[{click:handler,text:text}]
或按钮选项的
{text:handler}
格式(见我的答案)
$(DialogDiv).dialog({
    bgiframe: true,
    resizable: false,
    buttons: [ { 
        text: com.i18n.getText("Save"),
        click: saveCallback
      }, {
        text: com.i18n.getText("Cancel"),
        click: cancelCallback
      }
    ]
});