2

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

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

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

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

怎么没变?有没有办法获得新的新鲜价值?

4

2 回答 2

6

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

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

$( "#my-element" ).offset().top - $( document ).scrollTop()
于 2013-05-17T15:32:14.663 回答
2

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

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

在此处阅读更多相关信息。

这是您需要的工作小提琴。

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

于 2013-05-17T15:23:57.650 回答