2013-05-07 33 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) ; 
    } 
}