Диалоговые кнопки пользовательского интерфейса jQuery из переменных

У меня есть переменные, содержащие переведенные метки для кнопок внутри диалогового окна пользовательского интерфейса jquery.

Я не могу заполнить ключ массива кнопок самой переменной и не могу найти способ, чтобы она обрабатывала мою переменную так же, как строку.

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'); }
    }
});

Есть ли способ заставить это работать с переменными ключами массива?


person Karsten    schedule 31.08.2009    source источник
comment
Написание translatinos сделано намеренно или это опечатка?   -  person Anderson Green    schedule 15.05.2013


Ответы (2)


Вы можете попробовать это, может быть, это поможет:

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

Надеюсь, поможет!

person Alexey Ogarkov    schedule 31.08.2009
comment
Этот способ работает - у меня была такая же проблема несколько дней назад - это путь. - person Emil Ivanov; 31.08.2009
comment
пробовал это час, но с другим синтаксисом... попробую еще раз;) - person Karsten; 31.08.2009

Я знаю, что этому 4 года, но это лучший результат для моей проблемы. Вот результаты моего труда.

Просто вызовите функцию в событии мыши или клавиатуры, укажите ссылку на функцию (без круглых скобок), определите кнопки или установите пустое значение, установите заголовок и задайте отображаемый текст.

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;
}
person japtain.cack    schedule 22.08.2014