在CoffeeScript中执行错误的事件

时间:2011-10-08 14:28:14

标签: javascript jquery coffeescript

这有效:

$("#add").click( -> stack.op "add" )
$("#sub").click( -> stack.op "sub" )

但这不是:

for op in ['add','sub']  
  $('#' + op).click( -> stack.op op)

两个按钮都执行最后一个操作“sub”。

Class Stack
  add: ...
  sub: ...
  op: (name) ->
    eval "this.#{name}()"

1 个答案:

答案 0 :(得分:3)

使用do构造:

for op in ['add', 'sub']
    do (op) ->
        $('#' + op).click( -> stack.op op)

这是因为for循环不会创建闭包。