2010-08-04 109 views

回答

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

$(document).scrollTop() //returns scroll position from top of document 
+0

我的若干思考同樣的方式,但爲什麼 的console.log($(本).scrollTop())= 1187 的console.log($(本).height())= 1762 它有什麼不同?對於575px,如果我已經滾動到頁面的底部。 這些575px哪去了?滾動條不能是576px :) – Somebody 2010-08-04 15:37:05

+3

Baaah又是我的錯。我正在看着打開螢火蟲窗口的滾動條。 Ofc現在可以是576px。 :) 謝謝我猜題目已關閉。 – Somebody 2010-08-04 15:38:57

+100

-1 - 這是非常好的,但不回答這個問題,這是關於'scrollHeight'。 – 2012-05-30 15:50:00

3

像這樣的東西應該解決您的問題:

$.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:每次你需要它的時候調用該函數,該警報是用於測試目的..

+0

出於某種原因,此功能對我無法正常工作;在iframe中使用它。 的實際高度是256像素,這個函數給了我337像素,我不知道它來自哪裏。附:我使用Chrome 18. – jurchiks 2012-04-19 07:56:24

+0

@jurchiks:你有鏈接到iframe的位置,讓我看看? – Zuul 2012-04-19 17:50:57

+0

https://www.blade.dateks.lv/salidzinat?ids=58664,43586。點擊任何問號。我已經設法修復了其中的大部分,但其中的兩個(還有更多取決於所比較的項目)在底部仍然有一些奇怪的,神祕的〜20px的邊距。當我調整窗口大小時,它會消失,因爲我改變了窗口大小的彈出窗口大小。 – jurchiks 2012-04-23 09:52:45

6
document.getElementById("elementID").scrollHeight 

$("elementID").scrollHeight 
+0

那麼你的文檔對象的元素ID是什麼? ...也許你的意思是「document.body.scrollHeight」? – BrainSlugs83 2012-06-16 06:23:50

+2

$('#gallery')。scrollHeight給了我未定義的//#圖庫是我的溢出ID:auto元素,不起作用 – 2013-03-13 00:49:00

176

這裏是如何得到使用jQuery選擇器獲得的元素的scrollHeight

$(selector)[0].scrollHeight 

如果selector是元素的id(例如, elemId),保證數組的0索引項是你想要選擇的元素,並且scrollHeight將是正確的。

+12

照顧,根據Mozilla知識庫,它不支持IE版本小於8.0 https://developer.mozilla.org/en/DOM/element.scrollHeight – 2011-09-16 22:54:24

+0

正如@EmanueleDelGrande所說:看這裏:http://www.quirksmode.org/dom/w3c_cssom.html - 對於IE <8的DOM scrollHeight實現,但不正確。對我來說,它在IE 6,7在netrenderer中工作,但可能無法在所有情況下工作。 – TMS 2012-03-24 22:48:32

+2

同意@Tomas,使用jQuery的抽象更好地處理跨瀏覽器怪癖。例如,上面的代碼可以修改爲$(selector).offset()top – 2012-04-07 17:46:17

45

如果您使用Jquery 1.6或更高版本,請使用prop來訪問該值。

$(document).prop('scrollHeight') 

以前的版本用於從attr獲取值,但不是1.6版。

+12

與$(document).attr(「scrollHeight」)一樣,這會爲jQuery 1.7.1返回「undefined」。 – Michael 2012-07-15 23:04:43

+5

這是因爲它缺少body元素。它需要是$(document.body).prop('scrollHeight') - 此時你可以直接使用document.body.scrollHeight; – goddogsrunning 2013-09-10 02:20:30

3

要獲得窗口滾動條滾動區域的實際可滾動高度,我使用了$('body').prop('scrollHeight')。這似乎是最簡單的工作解決方案,但我沒有廣泛檢查兼容性。 Emanuele Del Grande注意到另一個解決方案,這可能不適用於低於8的IE。

大多數其他解決方案對滾動元素工作正常,但這適用於整個窗口。值得注意的是,我和Ankit的解決方案有Michael一樣的問題,即$(document).prop('scrollHeight')正在返回undefined

6

它使用HTML DOM元素,但不使用jQuery選擇器。 它可用於像:

var height = document.body.scrollHeight; 
-1

試試這個:

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

你可以試試這個例如,這個代碼把滾動條在底部所有DIV標籤

記住:jQuery的可以接受函數而不是值作爲參數。 「this」是jQuery處理的對象,該函數返回當前DIV「this」的scrollHeight屬性,併爲文檔中的所有DIV執行此操作。

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