在Javascript 中的循环中创建闭包是一个常见的错误。您需要具有以下某种回调函数:
function createCallback( i ){ return function(){ alert('you clicked' + i); }}$(document).ready(function(){ for(var i = 0; i < 20; i++) { $('#question' + i).click( createCallback( i ) ); }});
由于这个问题仍然受到关注,并且ES6也越来越受欢迎,因此我建议使用一种现代的解决方案。如果您编写ES6,则可以使用
let关键字,它使
i变量在循环本地而不是全局:
for(let i = 0; i < 20; i++) { $('#question' + i).click( function(){ alert('you clicked ' + i); });}
它更短,更容易理解。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)