Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jquery获取固定div的位置_Jquery_Html_Position_Fixed - Fatal编程技术网

使用jquery获取固定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

我有一个位置为“fixed”的div,我想在用户向下滚动页面时,获取它相对于整个文档的位置值

假设我打开div(x=0,y=0),然后用户向下滚动一点,现在,相对于文档,div打开了(x=0,y=300)。我想得到这些信息,我想知道div在每一时刻的确切位置,再一次,相对于整个文档,而不是相对于窗口或浏览器

我尝试了很多东西,但似乎没有什么能达到我想要的

其中之一是此代码,在固定div的情况下不起作用:

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())