2013-11-25 38 views
0

我有從1-10編號的DOM對象,如下所示:checkbox_1,back_arrow_1,checkbox_2,back_arrow_2。當點擊箭頭,我希望它執行與同名的複選框對象的點擊功能,例如動態綁定編號的對象?

back_arrow_1 clicked 
-> $(checkbox_1).click(); 

我動態綁定的點擊功能的BACK_ARROW的像這樣:

(function(){ 
    for (var ar_num = 1; ar_num < 4; ar_num++){ 
      $("back_arrow_"+ar_num).bind("click", function() {  
      $("checkbox_"+ar_num).click();   
     }); 
    } 

})(); 

而console.logging()表明它綁定了正確的箭頭,但是當我點擊任何一個箭頭時,它會爲checkbox_4執行點擊功能,這是因爲我假設不是將「checkbox_1」綁定爲例子,瀏覽器執行checkbox_ + ar_num事件,獲取for循環離開ar_num所在的編號。

執行此功能的正確方法是什麼?

+0

你並不需要一個for循環。什麼是'back_arrow_1',一個ID? –

+0

$(「#back_arrow _」+ ar_num)可能工作 – SHIN

回答

2

您需要設置一個閉包,它將在您的循環結束後在您的點擊函數中保存ar_num的值。

看看這個:jsfiddle

for (var ar_num = 1; ar_num < 4; ar_num++){ 
    (function(num) { 
     $("#back_arrow_"+num).bind("click", function() {  
      $("#checkbox_"+num).click();  
     }); 
    })(ar_num); 
} 
+0

是的,這工作。來自AS3背景我仍然不完全習慣於使用JS範圍/閉包,謝謝! –