在每个循环的jquery中创建多维数组或对象

时间:2014-01-23 14:38:10

标签: javascript jquery arrays multidimensional-array

这就是我所得到的并且已经被打了几个小时。如果我在每个循环中alert(i)它给我1,2,3...但是如果我想用作多维数组的键,它就像一个字符串"i"

$(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/

的小提琴

1 个答案:

答案 0 :(得分: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);
});