2009-08-31 33 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'); } 
    } 
}); 

可変配列キーでこれを使用する方法はありますか?

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

はそれが役に立てば幸い:あなたはこれを試すことができ

+0

「translatinos」のスペルは意図的なものか、それとも打ち間違いですか? –

答えて

38

、それは助けかもしれません!

+0

この方法はうまくいきます - 私は数日前に同じ問題を抱えています - それが行く方法です。 –

+0

これを1時間試しましたが、別の構文で試してみました...もう一度やり直してください;) – Karsten

+0

あなたの構文でこれは問題なく動作します;)ありがとう – Karsten

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