Javascript for循环中的jquery迭代器
我是JavaScript和jQuery的新手。我发现了一个我自己解决不了的问题Javascript for循环中的jquery迭代器,javascript,jquery,for-loop,iterator,Javascript,Jquery,For Loop,Iterator,我是JavaScript和jQuery的新手。我发现了一个我自己解决不了的问题 for (i = 0; i < 12; i++) { $("#c" + i).on("click", function () { alert(i) }); } 效果很好。这不是一样吗?这是因为var关键字的工作方式,也是因为 $("#c" + i).on("click", function () { alert(i) });` 本质上是异步的 就这样做吧 快速修复 for (let i = 0; i
for (i = 0; i < 12; i++)
{
$("#c" + i).on("click", function () { alert(i) });
}
效果很好。这不是一样吗?这是因为
var
关键字的工作方式,也是因为
$("#c" + i).on("click", function () { alert(i) });`
本质上是异步的
就这样做吧
快速修复
for (let i = 0; i < 12; i++)
{
$("#c" + i).on("click", function () { alert(i) });
}
您正在提醒
i
。当点击发生时,循环已经完成,因此i
被设置为12
而不是id
您可以使用类名配置来处理点击事件。这将有助于:谢谢!这很有魅力!所以这都是关于从迭代器“克隆”值的。抱歉,看起来像是新手犯的错误,但这是我在JS中的第二天,我无法在这里和谷歌上找到解决方案:)“本质上是异步的”?这是一种令人困惑的说法,即函数是在函数作用域var
已经更改的稍后时间点运行的。毕竟,你不会叫让在本质上是同步的,是吗?问题只是var
@Xufox我同意这是一种令人困惑的说法。不过我已经修好了。
for (let i = 0; i < 12; i++)
{
$("#c" + i).on("click", function () { alert(i) });
}
for(var i = 0; i < 12; i++) {
(function(i) {
$("#c" + i).on("click", function () { alert(i) });
})(i);
}