从值数组生成jQuery对话框按钮

时间:2013-05-06 08:52:48

标签: jquery jquery-ui jquery-ui-dialog

我正在尝试动态创建一个jQuery UI对话框,其中包含从传递给该函数的数组派生的按钮,然后将所选按钮的键传递给按钮单击时的下一个函数,但到目前为止没有运气。

一个简单的测试用例:

var buttons = {};
for (var o in options) {
  buttons[options[o]]=function(){
    alert(o);
  }
}

按钮的标签是正确的,但是在点击时,alert()始终显示按钮数组中最后一个元素的键。

我尝试了不同的技巧(将o复制到局部变量等),但无济于事。

关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:0)

您的变量o绑定到foo循环的范围,这意味着当调用警报时,它会保留分配给它的最后一个值。

当您使用jQuery时,可以使用$.each来解决此问题:

var buttons = {};
$.each(options, function(i, v) {
     buttons[v] = function() {
         alert(v);
     }
});

v等同于您自己代码中的options[o],但不依赖于循环变量的范围。