滚动后元素的位置()。顶部不会改变 - 如何获得新位置?

时间:2013-05-17 15:21:46

标签: jquery

当用户滚动窗口时,我需要获取元素的(div)位置(position()。top)。问题是当我在滚动后调用position()。top来获取新位置时,它的值与滚动前相同。这是一些代码:

$('document').ready(function() {

    alert($('#my-element').position().top);

    $(window).scroll(function() {
        alert($('#my-element').position().top);
    });
});

为什么不改变?有没有办法获得新的新价值?

2 个答案:

答案 0 :(得分:6)

jQuery的.position()返回相对于元素的偏移父级。

您可能应该使用.offset().top,它将相对于文档进行计算,然后从文档滚动大小中对其进行折扣。

$( "#my-element" ).offset().top - $( document ).scrollTop()

答案 1 :(得分:2)

我相信你正在寻找.scrollTop()

scrollTop()方法设置或返回所选元素的垂直滚动条位置。

详细了解here

这是您需要的working fiddle

根据gustavohenke,您应该使用。offset(),因为.position()相对于它的父级。 .offset()与文档窗口相关。