【问题标题】:Generating jQuery dialog buttons from an array of values从值数组生成 jQuery 对话框按钮
【发布时间】:2013-05-06 08:52:47
【问题描述】:

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

一个简单的测试用例:

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

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

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

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

【问题讨论】:

  • 你能显示示例输出吗?
  • 可以发布option的内容。

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


【解决方案1】:

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

当你使用 jQuery 时,你可以使用$.each 来解决这个问题:

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

v 等效于您自己代码中的options[o],但不受循环变量范围的约束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 2013-08-22
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 2011-05-06
    相关资源
    最近更新 更多