如何在“ for”循环内添加“ click”处理程序?

时间:2018-11-15 08:34:35

标签: jquery loops for-loop

有这样的一块在哪里

var item = ['A', 'B', 'C'];
for(var i=0; i<item.length; i++) {
    $(document).on('click', '#calc'+item[i], function() {
        $("#calc"+item[i]+"Sum").addClass("field");
        ($(this).is(":checked")) ? $("#calc"+item[i]+"Info").css("display", "") : $("#calc"+item[i]+"Info").css("display", "none");
    });
}

只有AB和C发生变化; 我想写()

{{1}}

在点击功能之后,他又增加了一个功能。事实证明,该函数内部已经有i =3。对于这个问题还有其他解决方案吗?谢谢

1 个答案:

答案 0 :(得分:1)

事实是您引用的是外部作用域变量。

您可以看一下这个问题:Functions declared within loops referencing an outer scoped variable may lead to confusing semantics. What is wrong?

根据您的情况,您可以尝试以下代码:

var item = ['A', 'B', 'C'];
for(var i=0; i<item.length; i++) {
    const j = i;
    $(document).on('click', '#calc'+item[j], function() {
        $("#calc"+item[j]+"Sum").addClass("field");
        ($(this).is(":checked")) ? $("#calc"+item[j]+"Info").css("display", "") : $("#calc"+item[j]+"Info").css("display", "none");
    });
}