2010-08-07 6 views
4

J'ai une page Web qui utilise différentes langues stockées dans localStorage, et sur la boîte de dialogue jQuery Je veux les noms des boutons pour changer dynamiquement en fonction de la langue, par exemple:noms de boutons dynamiques sur les boîtes de dialogue jQuery

var btn_hello_text = getLanguageBtnHelloText(); 

$('#dialog').dialog({ 
    autoOpen: false, 
    buttons: { 
     btn_hello_text: function() { 
      doThings(); 
     } 
    } 
}); 

Le problème ici est que la boîte de dialogue affiche un bouton avec le texte "btn_hello_text" et non la valeur incluse dans la variable elle-même. Je ne peux pas trouver un moyen de changer la valeur du texte du bouton dynamiquement, des conseils? Je vous remercie.

Répondre

5

Vous pouvez utiliser bracket notation (au lieu de dot notation), comme ceci:

var my_buttons = {}; 
my_buttons[getLanguageBtnHelloText()] = doThings; 

$('#dialog').dialog({ 
    autoOpen: false, 
    buttons: my_buttons 
}); 
1

Vous ne pouvez pas faire cela en utilisant la déclaration d'objet en ligne. Mais il peut être fait en utilisant la syntaxe de support carré à la place:

var btn_hello_text = getLanguageBtnHelloText(); 

var buttonDefs = {}; 
buttonDefs[btn_hello_text] = function() { doThings(); }; 

$('#dialog').dialog({ 
    autoOpen: false, 
    buttons: buttonDefs 
}); 
Questions connexes