这就是我所得到的并且已经被打了几个小时。如果我在每个循环中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/
的小提琴答案 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);
});