当用户滚动窗口时,我需要获取元素的(div)位置(position()。top)。问题是当我在滚动后调用position()。top来获取新位置时,它的值与滚动前相同。这是一些代码:
$('document').ready(function() {
alert($('#my-element').position().top);
$(window).scroll(function() {
alert($('#my-element').position().top);
});
});
为什么不改变?有没有办法获得新的新价值?
答案 0 :(得分:6)
jQuery的.position()
返回相对于元素的偏移父级。
您可能应该使用.offset().top
,它将相对于文档进行计算,然后从文档滚动大小中对其进行折扣。
$( "#my-element" ).offset().top - $( document ).scrollTop()
答案 1 :(得分:2)
我相信你正在寻找.scrollTop()
。
scrollTop()方法设置或返回所选元素的垂直滚动条位置。
详细了解here。
这是您需要的working fiddle。
根据gustavohenke,您应该使用。offset()
,因为.position()
相对于它的父级。 .offset()
与文档窗口相关。