使用变量创建jQuery UI对话框按钮

22

我有一些变量存储了jQuery UI对话框内按钮的翻译标签。

但我无法使用这些变量来填充按钮数组的键,也找不到任何方法让它将我的变量视为字符串处理。

translations['ok'] = 'ok';
translatinos['cancel'] = 'cancel';

// not working
jQuery('#foo').dialog({
    buttons:
    {
        translations['ok']: function() { alert('foo-ok'); },
        translations['cancel']: function() { alert('foo-cancel'); }
    }
});

// working
jQuery('#bar').dialog({
    buttons:
    {
        "Ok": function() { alert('bar-ok'); },
        "Cancel": function() { alert('bar-cancel'); }
    }
});

有没有办法让这个方法适用于可变的数组键?


“translatinos” 的拼写是有意为之还是笔误? - Anderson Green
3个回答

38

你可以尝试这个,也许会有帮助:

var buttonsOpts = {}
buttonsOpts[translations["ok"]] = function ....
buttonsOpts[translations["cancel"]] = function ....
jQuery('#bar').dialog({
   buttons : buttonsOpts
});

希望能对你有所帮助!


这种方法可行 - 几天前我也遇到了同样的问题 - 这就是正确的方法。 - Emil Ivanov
尝试了一个小时,但是用了另一种语法...我会再试一次 ;) - Karsten

1
jQuery('#bar').dialog({
   buttons : [
       {
        text: translations.ok,
        click: function(){}
       },
       {
        text: translations.cancel,
        click: function(){}
       },
   ]
});

0

我知道这篇文章已经四年了,但它是我一直遇到的问题的最佳解决方案。以下是我的努力成果。

只需在鼠标或键盘事件中调用函数,引用一个没有括号的函数,定义按钮或设置为空白,设置标题,并设置要显示的文本即可。

function confirmDialogue(fn, value, ok, cancel, title, text){
    if (typeof ok == "undefined" || ok == ""){ok = "Ok";}
    if (typeof cancel == "undefined" || cancel == ""){cancel = "Cancel";}
    var buttonsOpts = {};
    buttonsOpts[ok] = function() {fn(value);$( this ).dialog( "destroy" );}
    buttonsOpts[cancel] = function() {$( this ).dialog( "destroy" );}

    var NewDialog = $('<div id="dialogConfirm"><p>' + text + '</p></div>');
    NewDialog.dialog({
        title: title,
        dialogClass: "dialogue",
        modal: true,
        height: "auto",
        width: "auto",
        show: true,
        hide: true,
        close: function(){$(this).dialog('destroy');},
        buttons: buttonsOpts
    });
    return false;
}

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