我在将变量从一个函数传递给Jquery句柄函数时遇到了一个简单的问题。 在第一个函数中,我有一个for循环遍历项目列表。该函数插入一张图片,我想在图像上附加一个onclick()Jquery句柄。 onclick()调用一个传递for循环的indx的函数。传递的值不是传递引用,所以所有的onclick句柄都以相同的值(for循环的最后一个值)结束。 代码如下:
function setAlbums()
{
for(var indx=0;indx<$("li.mainSpPic").length;indx++)
{
....
$("li.mainSpPic").eq(indx).children("img").eq(0).click(**function(){chngAlbm(indx,albmStrB[1]**);}) ;
}
那么有人可以建议如何传递每个onclick()函数都具有唯一值的indx变量吗?
答案 0 :(得分:0)
这是因为Javascript中的闭包。它失败是因为处理函数绑定到变量indx,而不是函数生成时变量indx的值。 处理函数在for语句结束时运行。
解决这个问题的方法就是这个。
function setAlbums()
{
for(var indx=0;indx<$("li.mainSpPic").length;indx++)
{
....
$("li.mainSpPic").eq(indx).children("img").eq(0).click(function(value) {
return function() {
chngAlbm(value,albmStrB[1]);
}
})(indx) ;
}
}