2013-01-11 55 views
0

可能重複道:
Javascript closure inside loops - simple practical example保持的當前迭代「的」變量在封閉

for (i=0; i<N; i++) { 
    $.get("script"+ i +".jsp", function() { 
     //I want to use i here 
     //but by the time the ajax request comes back i==N, but I want the old i 
    }) 
} 

所以我得到這個代碼,我在想,如果有一個更好的辦法來做到這一點,而不是我的迴應。 這不是關於jQuery的ajax調用,我知道有辦法通過事件對象傳遞「我」,我想要一個比我想出的更好的通用解決方案。

+0

好了,這是相當瑣碎的問題,以及問題的答案。無論如何,使用封閉裝置在這裏是一顆銀色的子彈。 – VisioN

+1

另一種方法是使用'.bind',但只有在您不依賴於'this'被調用代碼設置爲特定值時纔有效。您始終可以使用函數發生器並將值傳遞給它(而不是使用函數表達式)。 –

回答

1

製作一個自動執行功能來保存我的作品,但非常難看:

for (i=0; i<N; i++) { 
    (function(i) { 
     $.get("script"+ i +".jsp", function() { 
      //I want to use i here 
      //but by the time the ajax request comes back i==N, but I want the old i 
     }) 
    } (i)); 
}