动态绑定编号的对象?

时间:2013-11-25 09:39:31

标签: javascript jquery adobe-edge

我有从1-10开始编号的DOM对象:checkbox_1,back_arrow_1,checkbox_2,back_arrow_2。单击箭头时,我希望它执行具有相同名称的checkbox-object的单击功能,例如

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

我动态绑定back_arrow的click函数,如下所示:

(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的click函数,这是因为我假设不是绑定“checkbox_1”而是例如,浏览器执行checkbox_ + ar_num事件,获取for循环离开ar_num的数字。

执行此功能的正确方法是什么?

1 个答案:

答案 0 :(得分: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);
}