Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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 如何获取文档的滚动位置?_Jquery_Scroll - Fatal编程技术网

Jquery 如何获取文档的滚动位置?

Jquery 如何获取文档的滚动位置?,jquery,scroll,Jquery,Scroll,如何获取文档的滚动位置值?类似这样的内容应该可以解决您的问题: $(document).height() //returns window height $(document).scrollTop() //returns scroll position from top of document $.getDocHeight = function(){ var D = document; return Math.max(Math.max(D.body.scrollHeigh

如何获取文档的滚动位置值?

类似这样的内容应该可以解决您的问题:

$(document).height() //returns window height

$(document).scrollTop() //returns scroll position from top of document
$.getDocHeight = function(){
     var D = document;
     return Math.max(Math.max(D.body.scrollHeight,    D.documentElement.scrollHeight), Math.max(D.body.offsetHeight, D.documentElement.offsetHeight), Math.max(D.body.clientHeight, D.documentElement.clientHeight));
};

alert( $.getDocHeight() );

Ps:每次需要时调用该函数,该警报用于测试目的。

以下是如何获取使用jQuery选择器获得的元素的
滚动高度

document.getElementById("elementID").scrollHeight

$("elementID").scrollHeight
$(selector)[0].scrollHeight

如果
selector
是元素的id(例如
elemId
),则可以保证数组的0索引项将是您希望选择的元素,
scrollHeight
将是正确的。

如果您使用的是Jquery 1.6或更高版本,请使用prop访问该值

$(document).prop('scrollHeight')

以前的版本用于从attr获取值,但不是post 1.6。

要获取窗口滚动条滚动区域的实际可滚动高度,我使用了
$('body').prop('scrollHeight')
。这似乎是最简单的工作解决方案,但我还没有广泛检查兼容性。Emanuele Del Grande在另一个解决方案中指出,这可能不适用于8以下的IE


大多数其他解决方案对于可滚动的元素都很好,但这适用于整个窗口。值得注意的是,对于Ankit的解决方案,我和Michael遇到了相同的问题,即
$(document).prop('scrollHeight')
返回
未定义的

它使用HTML DOM元素,但不使用jQuery选择器。 它可以像这样使用:

var height = document.body.scrollHeight;
试试这个:

var scrollHeight = $(scrollable)[0] == document ? document.body.scrollHeight : $(scrollable)[0].scrollHeight;

您可以尝试这样做,例如,这段代码将滚动条放在所有DIV标记的底部

记住:jQuery可以接受函数,而不是值作为参数。 “this”是jQuery处理的对象,该函数返回当前DIV“this”的scrollHeight属性,并对文档中的所有DIV执行该操作

$("div").scrollTop(function(){return this.scrollHeight})

我也这么想,但是为什么console.log($(this.scrollTop())=1187 console.log($(this.height())=1762它有这么大的不同呢?如果我已滚动到页面底部,则为575px。那些575px去哪了?滚动条不能是576px:)啊,又是我的错。我看着打开了firebug窗口的滚动条。Ofc现在可以是576px.:)谢谢,我想主题已经结束了。-1-这很好,但没有回答关于
scrollHeight
的问题。正确,这是一个jquery问题。但是$(document).height()或$(document).scrollTop()都没有提供所需的信息。请求的是滚动高度。scrollHeight值是元素可用的总高度(如果可滚动,则该值可能大于其高度)。scrollTop返回元素离顶部的距离。两者都不回答总可用高度是多少。有关ScrollHeight的理解,请参阅。此标记为答案,因为它回答了询问者的预期问题,该问题与文档当前滚动的高度有关。。。ergo“scrollHeight”。这个名称在不同的上下文中使用是巧合。请注意,根据Mozilla知识库,IE版本低于@Tomas同意的8.0版本不支持它,请使用jQuery的抽象来更好地处理跨浏览器的怪癖。例如,可以将上述内容修改为$(选择器).offset().topUm,no$(文档).offset()返回空值,.offset()与浏览器滚动条的位置无关(.offset()返回相对于文档的项目坐标)。我同意在可能的情况下应该使用jQuery,但显然,由于没有跨浏览器的支持,jQuery没有为它提供抽象。您也可以使用$(选择器).get(0)。scrollHeight@DmitriscrollHeight是一个DOM节点属性,而不是jQuery属性;在iframe中使用它。实际的高度是256px,这个函数给了我337px,我不知道它来自哪里。另外,我用的是Chrome18。@jurchiks:你有没有链接到iframe的位置,让我看看。单击任何问号。我已经设法修复了大部分,但其中两个(还有更多取决于所比较的项目)的底部仍然有一些奇怪、神秘的~20px的边距。但是,当我调整窗口大小时,它会消失,因为我让它在调整窗口大小时更改弹出窗口的尺寸。那么,您的文档对象的元素Id是什么。。。也许你的意思是“document.body.scrollHeight”?$(“#gallery”)。scrollHeight为我提供了未定义的//#gallery是我的溢出id:auto元素,不起作用。对于我来说,使用jQuery 1.7.1时,它会返回“未定义”,就像$(document.attr(“scrollHeight”)一样。这是因为它缺少body元素。它需要是$(document.body.prop('scrollHeight')—此时您可以只使用document.body.scrollHeight;