javascript - 迭代时为 DOM 事件监听器分配变量

标签 javascript dom dom-events

我想这里缺少一些基本的东西;

for (var i=1; i<=5; i++) {
  var o = $('#asd'+i);

  o.mouseover(function() {
    console.info(i);
  });
}

当悬停在五个不同的元素上时,我总是从迭代中得到最后一个值;值 5。我想要的是不同的值,具体取决于我悬停在哪个元素上,从 15

我在这里做错了什么?

最佳答案

你需要一个闭包,因为所有的鼠标悬停函数都引用同一个变量,其值正在改变:

for (var i=1; i<=5; i++) {
    (function(j) {
        $('#asd'+j).mouseover(function() {
            console.info(j);
        });
    })(i);
}

通过创建闭包,变量 j 位于函数的局部范围内,并且不会在“外部”i 更改时更改。

关于javascript - 迭代时为 DOM 事件监听器分配变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2952617/

相关文章:

javascript - 使用原型(prototype)时,我需要将所有内容包装在 DOM 加载上吗?

javascript - 强制 Youtube 嵌入以高清播放(2016 版)

javascript - ionic : How to let my click event go through

javascript - IE9 事件是否完全符合 DOM Level 2 标准?

javascript - 使用 JavaScript 动态插入 DIV 的成本有多高?

javascript - 两个按钮一种形式

javascript - 按键组合的 ASCII 代码生成

javascript - 如何将循环数组项传递给函数变量

javascript - 如何使用 javascript 查找当前窗口偏移量?

javascript - 使用replace修改src attr