2013-05-07 34 views
0

我在将变量从一个函数传递给Jquery句柄函数时存在一个简单问题。 在第一个函数中,我有一个循环遍历项目列表。该函数插入一张图片,我想为图片添加一个onclick()Jquery句柄。 onclick()调用一个传递for循环的函数。传递的值不是传递的,而是所有的onclick句柄都以相同的值(for循环的最后一个值)结束。 的代码如下:将变量传递给javascript中的函数

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]**);}) ; 

    } 

所以有人可以告诉我如何通过INDX变量,每个的onclick()函数将有一个独特的价值?

+0

@Barmar实际上没有必要这样做,因为在这种情况下可以计算索引。 – 2013-05-07 18:18:24

+0

阅读这个知道如何闭包工程http://stackoverflow.com/questions/13458889/need-help-understanding-js-code – deven98602 2013-05-07 18:20:42

+0

@杰克但是很高兴知道更一般的情况。 – Barmar 2013-05-07 18:21:17

回答

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) ; 
    } 
}