2009-08-31 29 views
22

我有變量持有jQuery UI對話框中按鈕的翻譯標籤。從變量的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'); } 
    } 
}); 

有沒有什麼辦法可以使用變量數組鍵?

+0

'translatinos'是拼寫故意的,還是它是一個錯字? – 2013-05-15 03:07:25

回答

38

你可以試試這個,可能是它幫助:

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

希望它能幫助!

+0

這種方式有效 - 幾天前我有同樣的問題 - 這是要走的路。 – 2009-08-31 12:49:59

+0

嘗試了一個小時,但用另一種語法...我會再試一次;) – Karsten 2009-08-31 12:53:18

+0

好吧,用你的語法,這現在工作正常;)謝謝 – Karsten 2009-08-31 13:10:31

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

我知道這是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; 
}