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

Lor*_*ren 1 javascript coffeescript

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

当我点击身体时,它会发出三次警报.我希望它提醒1,2和3.

Bri*_*sio 5

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

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

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