javascript – 关闭for循环

在一个循环中关闭导致我的问题.我想我必须做另一个函数来返回一个函数来解决这个问题,但是我无法让它使用我的jQuery代码.

这是简单形式的基本问题:

function foo(val) {
  alert(val);
}

for (var i = 0; i < 3; i++) {
  $('#button'+i).click(function(){
    foo(i);
  });
}

自然地点击三个按钮中的任何一个将会发出警报3.我想要的功能是点击按钮1会发出警报,说1,按钮2会说2等.

我怎么能做到这一点

参见bind方法.

$('#button'+i).bind('click', {button: i}, function(event) {
  foo(event.data.button);
});

从文档:

The optional eventData parameter is
not commonly used. When provided, this
argument allows us to pass additional
information to the handler. One handy
use of this parameter is to work
around issues caused by closures

翻译自:https://stackoverflow.com/questions/2192348/closures-in-a-for-loop

转载注明原文:javascript – 关闭for循环