jquery在for循环中单击函数

时间:2017-10-07 00:48:01

标签: for-loop

我有这个代码。出于某种原因,第一个console.log在控制台中打印出来但是当我点击时第二个给我一个未定义的。 cvs数组是全局的。 谢谢你的帮助

var losotro = ['div.santiago', 'div.karina', 'div.roman', 'div.marcos'];
var cvs = ['div#cv0 p', 'div#cv1 p', 'div#cv2 p', 'div#cv3 p'];
    for (i = 0; i < losotro.length; i++) {
       console.log(cvs[i]);
       jQuery(losotro[i]).click(function(){
          console.log(cvs[i]);       
    });
}

1 个答案:

答案 0 :(得分:0)

这是JavaScript中的典型闭包问题。

基本上,所有回调(click事件处理程序)都引用相同的变量i(我知道,这对我来说也很奇怪),在循环结束时应该是{ {1}}。和  绝对这超出了losotro.length数组的索引范围。

您可能想要检查JavaScript中的闭包是如何工作的。但对于当前的问题,你可以这样做。

losotro