2012-05-25 33 views
0

我有一個每個循環雖然對象,jquery如何從最後一次迭代傳遞變量?

而在其中,我創建了一些圖像,我想把它們的數據引用到最後一次迭代的圖像。

例如:

.each((function(some_data){ return function(i, obj){ 

    var prev='???'; // how do I retrieve the value from the last cycle? 
    var image=new Image(); 
     image.data('prev',prev); 
     prev=image; 
       // how do I pass the value to next cycle? 
    }})(some_data)); 
+2

將'prev'定義放在''每個'塊之外。 – VisioN

+0

哦,我從來沒有想過......但這聽起來像個好主意! – Anonymous

回答

1

你。每次調用之前,在外部範圍定義變量..

var prev=null; 
collection.each(function(idx, val){ 
    alert("Prev should have value from previous iteration (or null):" + prev); 
    var image=new Image(); 
    image.data('prev',prev); 
    prev=image; 
})(some_data)); 
+0

我也可以傳遞i和obj變量從而不使用返回函數()? – Anonymous

+0

是的,我沒有看到函數包裝器的需要。如果你不得不等待圖像加載到這個循環中,那麼事情會變得更加困難。 – Julian

1

使用全局值ouyside jquery的每個範圍。

myloopingvar=null; 

.each((function(some_data){ return function(i, obj){ 

if(loopingvar !=null) 
{// do stuff 
} 
var image=new Image(); image.data('prev',prev); loopingvar=image }})(some_data)); 
+1

Eww。全球。伊克。 (當使用'var'方法時,根據另一個答案,當代碼*希望*在另一個函數內時,它不會污染'window'。) – 2012-05-26 00:33:02

+0

@pst一個人不會意識到仔細觀察直到晚上由於全局名稱空間問題而導致的錯誤搜索: – vzwick