通过使用存储在数组中的ID获取元素偏移量

时间:2018-09-19 16:43:43

标签: javascript jquery html css

我正在尝试使用存储在数组中的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);

那也不起作用...

有人对我有解决方案吗?

提前谢谢!

1 个答案:

答案 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()处理。