2012-09-14 52 views
1

我試圖通過循環綁定點擊事件。jQuery綁定切換回路

只要我參考相對於原始綁定(使用this),此工作正常。問題是,這是不現實的使用this因爲我正在切換的元素是在DOM的一個單獨的部分。

結果,第4行將始終引用「圖像」在這種情況下。

的CoffeeScript:

for name in ["contact", "kws", "image"] 
    $("#expand-#{name}").bind('click', -> 
    $(this).toggleClass("icon-plus-sign").toggleClass("icon-minus-sign") 
    $(".#{name}-expander").toggle() 
) 

可悲的是,所有我想是重複的代碼。

感謝, 賈斯汀

回答

1

如果我正確理解你的問題,你有一個變量範圍的問題。 name將始終是您的處理程序運行時分配的最後一個值。

的CoffeeScript提供do關鍵字生成一個自閉調用,並給予適當的範圍name

for name in ["contact", "kws", "image"] 
    do (name) -> 
     $("#expand-#{name}").bind('click', -> 
      $(this).toggleClass("icon-plus-sign").toggleClass("icon-minus-sign") 
      $(".#{name}-expander").toggle() 
     ) 
+0

熱潮,非常感謝! – Justin