2012-09-13 71 views
0

基本的Javascript/jQuery问题:如何在键/值对中使用nonliteral作为键?我认为下面的语法会解析,但它不会。我正在尝试创建一个动态的对话框。我希望按钮文本是可变的。我怎么能用Javascript/jQuery做到这一点?或者我必须在我的.js文件上调用PHP? (所以不想这么做......)我可以在Javascript/jQuery中使用变量作为键吗?

function see_menu_custom(t1, m1, t2, m2, t3, m3, t4, m4, t5, m5) 
{ 
    $(document).simpledialog2(
    { 
     mode: 'button', 
     headerText: 'Send Message', 
     headerClose: true, 
     showModal: true, 
     animate: false, 
     buttons : 
     { 
      t1: /******** How can I make this a nonliteral? *********/ 
      { 
       click: function() { 
        sendMessage(username, token, t1, m1); 
       }, 
       iconpos : "right", 
       icon : "arrow-r", 
       theme : "e" 
      }, 
... 

回答

1

括号标记是正确的答案,但你似乎是问如何也要通过它,像这样构造

function see_menu_custom(t1, m1, t2, m2, t3, m3, t4, m4, t5, m5) 
{ 
    var myButtons = {}; 
    myButtons[t1] = { 
     click: function() { 
      sendMessage(username, token, t1, m1); 
     }, 
     iconpos : "right", 
     icon : "arrow-r", 
     theme : "e" 
    }; 
    // rest of buttons 
    ... 
    // then pass into next step 
    $(document).simpledialog2(
    { 
     mode: 'button', 
     headerText: 'Send Message', 
     headerClose: true, 
     showModal: true, 
     animate: false, 
     buttons : myButtons, // here 
... 
+0

谢谢!这工作! – Doug

1

使用bracket notation

buttons[var] = {}; 
+0

我到底该如何在我的代码中使用它?喜欢这个? '... animate:false, buttons [t1]:{ click:function(){ sendMessage(username,token,t1,m1); }, iconpos: “右”, 图标: “箭头-R”, 主题: “E” },按钮[T2] ...' – Doug

0

只能使用字符串对象的文字,使用表达式,您必须使用方括号和分配:

buttons[expression] = value; 
+0

我会怎么做这在我的例子吗? jQuery的东西扔了我。 – Doug

0

正如其他人所指出的那样,你不能做到这一点与文本对象符号。

不过,我想用的标题关键是把按钮阵列相比,不太自然的表示:

function see_menu_custom(t1, m1, t2, m2, t3, m3, t4, m4, t5, m5) 
{ 
    $(document).simpledialog2(
    { 
     mode: 'button', 
     ... 
     buttons : 
     [ 
      { 
       label: 'My arbitrary string value', 
       click: function() { 
        sendMessage(username, token, t1, m1); 
       }, 
       ... 
       theme : "e" 
      }, 
     ] 
相关问题