使用jquery获取固定div的位置
我有一个位置为“fixed”的div,我想在用户向下滚动页面时,获取它相对于整个文档的位置值 假设我打开div(x=0,y=0),然后用户向下滚动一点,现在,相对于文档,div打开了(x=0,y=300)。我想得到这些信息,我想知道div在每一时刻的确切位置,再一次,相对于整个文档,而不是相对于窗口或浏览器 我尝试了很多东西,但似乎没有什么能达到我想要的 其中之一是此代码,在固定div的情况下不起作用:使用jquery获取固定div的位置,jquery,html,position,fixed,Jquery,Html,Position,Fixed,我有一个位置为“fixed”的div,我想在用户向下滚动页面时,获取它相对于整个文档的位置值 假设我打开div(x=0,y=0),然后用户向下滚动一点,现在,相对于文档,div打开了(x=0,y=300)。我想得到这些信息,我想知道div在每一时刻的确切位置,再一次,相对于整个文档,而不是相对于窗口或浏览器 我尝试了很多东西,但似乎没有什么能达到我想要的 其中之一是此代码,在固定div的情况下不起作用: var position = $("#fixed").offset(); /*it gets
var position = $("#fixed").offset(); /*it gets the position of the div
"fixed" relative to the document*/
$("#fixed").html(position.top); /*it prints the obtained
value on the div "fixed"*/
,您可以看到,向下滚动时,div的位置值不会改变
如果我没有错的话,代码应该在每次更改其相对于文档的垂直位置时在div上打印一个新值。但事实证明,这并没有发生
已解决: 这个问题由一位专家解决了我没有跟踪滚动来刷新固定div位置的值。我是个白痴。因此,最后的代码按照他编写的方式运行良好:
$(function () {
var position = $("#fixed").offset();
$("#fixed").html(position.top);
$(window).scroll(function () {
var position = $("#fixed").offset();
$("#fixed").html(position.top);
});
})
及
感谢大家,特别是CodefFormer。为您提供了相对于整个文档的坐标
.offset()方法允许我们检索
相对于文档的元素。将此与.position()进行对比,
它检索相对于偏移父对象的当前位置。
将新元素放置在现有元素之上以用于全局
操纵(特别是用于实现拖放),
.offset()更有用
.offset()返回包含属性top和left的对象
注意:jQuery不支持获取隐藏对象的偏移坐标
元素,或用于在
身体元素
您可以使用
.offset()
获取元素相对于文档的当前坐标,而.position()
获取元素相对于其偏移父元素的当前坐标。除非刷新页面并且滚动条在初始化时位于不同的位置。有用信息$(“#”)offset().left,$(“#”)offset().top谢谢你,但正如我所说,我在几个小时内尝试了很多东西,当然我阅读了jQuery api,这是你引用的。我编辑了我的消息,包括您建议的方法,但它不起作用。谢谢,尽管这个答案与上一个答案基本相同,但它不起作用。我再次编辑了这个问题,添加了一个演示,让您看到它不起作用。如果不编写任何代码来跟踪您的滚动,您希望代码如何工作?请看:是的,我后来意识到,我想尝试用“mousemove”刷新值,这是一个愚蠢的想法,因为我想在用户向下滚动时触发该操作。谢谢你,它现在很好用,我会把它贴出来的。嗨!你能详细说明你的答案吗?仅仅发布一段代码并不能给社区带来多少好处
($("div").offset().top - $(document).scrollTop())