2014-01-23 163 views
3

這就是我所得到的並且已經持續了幾個小時。如果我在每個循環alert(i)它給了我1,2,3...但是如果我想爲關鍵,以使用多維數組它像一個字符串"i"在jquery每個循環中創建多維數組或對象

$(document).ready(function(){ 
    var positions=[]; 

    $(".box").each(function(i) { 
     //alert(i); 
     var elPositions = {}; 
     elPositions.i = $(this).offset().top; 
     positions.push(elPositions); 
     //$elPosArray[i] = $(this).offset().top; 
     //$(this).html('outer height--> ' + $(this).outerHeight(true)); 
    }); 
    console.log(positions); 
    //console.log(el); 
}); 

有問題和答案,這樣的話題,但他們沒有幫助我得到這個工作。

我想獲得一個數組或OBJ看起來像:

positions[0]['offset'] = '120'; 
    positions[0]['height'] = '300'; 
    positions[1]['offset'] = '420'; 
    positions[1]['height'] = '180'; 
    positions[2]['offset'] = '600'; 
    positions[2]['height'] = '100'; 
    positions[3]['offset'] = '700'; 
    positions[3]['height'] = '300'; 

這裏是用HTML http://jsfiddle.net/Z9WrG/

回答

7

你幾乎有一個小提琴!

在您的循環中,elPositions(此處更名爲data)在每次迭代中重新創建,然後用連續索引將其推入數組。數據對象中不需要指定i,因爲i是在您推入數組時自動分配的。

查看更新後的提琴:http://jsfiddle.net/Z9WrG/2/

和代碼:

$(document).ready(function(){ 
    var positions=[]; 

    $(".box").each(function() { 
     var $this = $(this); 
     var data = {}; 

     data.offset = $this.offset().top; 
     data.height = $this.height(); 

     positions.push(data); 
     // Now, positions[iteration_index] = { offset: x, height: y } 
    }); 

    console.log(positions); 
    console.log(positions[0].height); 
    console.log(positions[0].offset); 
}); 
+0

我知道,我知道,我應該不是在這裏說聲感謝。但感謝ZOUGEN :-)真棒,也告訴我做錯了什麼! – caramba

+0

不客氣...沒問題! :D –

+0

@caramba - 在評論中感謝某人的幫助沒有任何錯誤;)一般的立場是在問題結束時不加謝謝,因此它儘可能的清晰和簡潔。 – webnoob