Это классическая проблема JavaScript.Стандартное решение заключается в том, чтобы обернуть каждую итерацию цикла в анонимную функцию и передать id
в эту функцию;таким образом, функция, которую вы передаете click
, увидит этот конкретный экземпляр * 1003. *
CoffeeScript предоставляет хороший синтаксис для этой цели: do (id) -> ...
компилируется в (function(id){ ... })(id)
.Итак, для вашего примера вы бы написали
for id of obj
do (id) ->
button = $("#my_button"+ id)
button.click(-> console.log id)
Я говорю о do
в моей статье Вмешательство CoffeeScript .