我有从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的数字。
执行此功能的正确方法是什么?
答案 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);
}