好的,我不知道如何为这个问题标题。 openDir = (path) -> socket.emit "get_metadata", path, (data) -> columnBox = $ "<div/>", class: "columnbox" for item in data.contents itemBox = $ "<div/>", class: "itembox" itemBox.click -> columnBox_inner.children().removeClass "selected" itemBox.addClass "selected" # <<<— Over here openDir item.path columnBox.append itemBox columnBox.appendTo "#columnscontainer" 我明白,variablesitemBox是在openDir的范围下定义的。 但是由于指出的行是在一个lambda函数中,不应该itemBox那里捕获由父范围的itemBox引用的对象,而不是突变到它所引用的最后一个对象? 说清楚,我期望每个itemBox的点击处理程序执行自己的addClass "selected" 。 但是会发生什么情况是每个点击处理程序中的itemBox总是引用最后一个itemBox。 我可以通过更改itemBox被声明的位置来轻松解决这个问题。 即改变 for item in data.contents 成 […]