0

在将变量从一个函数传递给 Jquery 句柄函数时,我遇到了一个简单的问题。在第一个函数中,我有一个 for 循环遍历项目列表。该函数插入一张图片,我想在图像上附加一个 onclick() Jquery 句柄。onclick() 调用一个传递 for 循环索引的函数。不是传递值,而是传递引用,因此所有 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 变量吗?

4

1 回答 1

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) ;
     }
}
于 2013-05-07T18:20:14.970 回答