jquery循环中嵌套一个click事件,事件传入函数中为什么不能使用循环条件i?

winonama
  • 98
        for (var i = 0; i < liList.length ; i++) {
            $(liList[i]).click(function(event) {
                console.log(i);
            });
        }

如上代码
图片描述

打出的i是liList数组的长度7,并不是当前i的值,为什么?

回复
阅读 3.7k
4 个回答
✓ 已被采纳

日经问题……

  1. 用立即执行函数把.click事件整个包起来,再用另外的变量保存i

    for (var i = 0; i < liList.length ; i++) {
        (function(){
            var index = i;
            $(liList[index]).click(function(event) {
                console.log(index);
            });
        })();
    }
  2. var换成let

    for (let i = 0; i < liList.length ; i++) {
        $(liList[i]).click(function(event) {
            console.log(i);
        });
    }

作用域的问题,如果你是编程新手,可以去详细了解一下这块

var 改成 let,用块级作用域.

梁宏
  • 4
新手上路,请多包涵

i是属于for循环的,与click并没什么关系

你知道吗?

宣传栏