3
我正在循環一個對象,並試圖爲對應於對象中每個項目的每個按鈕添加一個onclick
事件。如何在coffeescript循環中捕獲異步函數的變量?
for id of obj
button = $("#my_button"+ id)
button.click(-> console.log id)
有了這個循環,每按鈕登錄循環的最後 ID。我如何獲得每個按鈕以記錄適當的相應ID?
我正在循環一個對象,並試圖爲對應於對象中每個項目的每個按鈕添加一個onclick
事件。如何在coffeescript循環中捕獲異步函數的變量?
for id of obj
button = $("#my_button"+ id)
button.click(-> console.log id)
有了這個循環,每按鈕登錄循環的最後 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
。
天哪,我從來不知道,我做錯了一切! – user1323136