javascript - 如何在 coffeescript 循环中捕获异步函数的变量?

标签 javascript loops coffeescript

我正在遍历一个对象并尝试为与对象中的每个项目对应的每个按钮添加一个 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/

相关文章:

javascript - Vanilla JS - slider - 事件点

java - 在读取 ArrayList 的同时打印 ArrayList 以获取打印条件

C#:获取列表中出现次数最多的元素?

c# - 在循环内部线程化以提​​高性能

javascript - Transmission.js 嵌套普通值

angularjs - 如何将资源与两个不同的服务集成以使用它们提供的参数查询服务器?

javascript - Webpack - _ 未定义

javascript - 有没有办法阻止 Karma 提供缓存文件?

javascript - 如何将文本转换为输入?

javascript - 基金会在 3 秒后关闭警报