我正在尝试使用存储在数组中的id来获取元素的偏移量。代码:
var id_array = new Array;
var offset_array = new Array;
var i = 0;
for(i = 0; i < $(".page-grid-picture").length; i++)
{
id_array.push($(".page-grid-picture")[i].getAttribute("id"));
offset_array.push(id_array[i].offset().top);
}
我已经使用alert来查看是否正确的值存储在id_array中。问题是,在尝试获取偏移值时,我似乎无法通过使用其索引来调用它来使用该值。如果我使用这样的唯一ID,那么它会起作用:
offset_array.push($("#unique-id").offset().top);
但是当我尝试使用id_array时却没有...我也尝试过:
offset_array.push(document.getElementById(id_array[i]).offset().top);
那也不起作用...
有人对我有解决方案吗?
提前谢谢!
答案 0 :(得分:1)
您需要在jQuery对象上调用offset()
。它不是String或原始DOM元素上的方法。
var id_array = [];
var offset_array = [];
var $pageGridPictures = $(".page-grid-picture");
$pageGridPictures.each(function(index, element){
var $this = $(element);
id_array.push(element.id);
offset_array.push($this.offset().top);
});
最初,您正在执行以下操作:
id_array.push($(".page-grid-picture")[i].getAttribute("id"));
该操作将找到所有页面网格图片元素作为jQuery对象。然后,它获取[i]
元素,该元素从jQuery对象中分离出一个DOM元素,然后从中获取id属性。因此,在这种情况下,推到id_array的值是一个字符串,而不是jQuery对象。因此,如果要以这种方式进行操作,则稍后必须获取ID,再次向上查找元素,然后对其进行offset()处理。