javascript - 使用存储在数组中的 id 获取元素偏移量

标签 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);

那也没用...

有人为我提供解决方案吗?

提前致谢!

最佳答案

您需要在 jQuery 对象上调用 offset()。它不是字符串或原始 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] 元素,该元素将单个 DOM 元素从 jQuery 对象中分离出来,然后从中获取 id 属性。所以在这种情况下推送到 id_array 的值是一个字符串,而不是一个 jQuery 对象。所以如果你打算这样做,你必须稍后获取 id,再次查找元素,然后对它执行 offset()。

关于javascript - 使用存储在数组中的 id 获取元素偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52410623/

相关文章:

javascript - 如何获取 TouchSwipe 事件目标

jquery - Ajax 数据返回缓慢

javascript - 将 ID 分配给 Viz.js 的 TD 元素以显示在 svg 元素中

javascript - 如何删除 Drupal 7 下拉 HTML 选择列表中的禁用选项

javascript - 将以前的数据放入表行中

javascript - DataTables 行很好但未初始化?

javascript - 以相同的方式将 tr 与不等数量的 td 对齐

javascript - 选择脚本标签之前的元素

javascript - jQuery fullpage js 修复我的 CSS

javascript - 如何获取图片链接以在 iframe 中打开其他文件