如何使用循环变量在循环内定义事件处理程序?

时间:2011-10-19 02:16:22

标签: javascript coffeescript

for a in [1,2,3]
  $('body').click (x) =>
    alert a

单击身体时会发出3次警报。我希望它提醒1,2和3。

1 个答案:

答案 0 :(得分:5)

我第一次搞砸了语法,但这次做对了:

你需要在函数周围创建一个闭包并立即调用它(就像在Javascript中一样)。 Coffeescript甚至为你提供了一个很好的语法... do关键字:

for a in [1,2,3]
  do (a) ->
    $('body').click (x) =>
      alert a