我正在遍历一个对象并尝试为与对象中的每个项目对应的每个按钮添加一个 onclick
事件。
for id of obj
button = $("#my_button"+ id)
button.click(-> console.log id)
在这个循环中,每个 按钮都会记录循环的last id。如何让每个按钮记录正确的对应 ID?
最佳答案
这是一个经典的 JavaScript 问题。标准的解决方案是将每个循环迭代包装在一个匿名函数中,并将 id
传递给该函数;这样,您传递给 click
的函数将看到该特定的 id
实例。
CoffeeScript 为此目的提供了一个很好的语法:do (id) -> ...
编译为 (function(id){ ... })(id)
。所以,对于你的例子,你会写
for id of obj
do (id) ->
button = $("#my_button"+ id)
button.click(-> console.log id)
我在文章 A CoffeeScript Intervention 中谈到了 do
.
关于javascript - 如何在 coffeescript 循环中捕获异步函数的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7531166/