簡體   English   中英

$(document).scrollTop() 總是返回 0

[英]$(document).scrollTop() always returns 0

一旦頁面的滾動位置達到一定高度,我只是想嘗試做一些事情。 但是,無論我向下滾動多遠, scrollTop()都會返回 0 或null 這是我用來檢查scrollTop()值的幫助函數:

$('body').click(function(){
    var scrollPost = $(document).scrollTop();
    alert(scrollPost);
});

我試過將scrollTop()附加到$('body')$('html') ,當然還有$(window) ,但沒有任何變化。

有任何想法嗎?

出於某種原因,從我的 html 和 body 標簽中刪除 'height: 100%' 解決了這個問題。

我希望這對其他人有幫助!

我在滾動 = 0 時遇到了同樣的問題:

document.body.scrollTop

下次使用

document.scrollingElement.scrollTop

編輯 01.06.2018

如果您使用event那么您將獲得在targetsrcElement具有document元素的target 例子 這是一個表格,顯示了不同瀏覽器上的滾動操作。

在此處輸入圖片說明

如您所見,Firefox 和 IE 沒有srcElement並且 IE 11 不支持scrollingElement

我的解決方案,在嘗試了上面的一些並且不涉及更改任何 CSS 之后:

var scroll_top = Math.max( $("html").scrollTop(), $("body").scrollTop() )

這適用於最新版本的 Chrome、Firefox、IE 和 Edge。

我只是為那些可能和我犯同樣錯誤的人提供了一個附加組件。 我的代碼如下:

var p = $('html,body');
$( ".info" ).text( "scrollTop:" + p.scrollTop() );

此代碼適用於除 webkit 瀏覽器(例如 chrome 和 safari)之外的所有瀏覽器,因為<html>標簽的 scrollTop 值始終為零或 null。

其他瀏覽器會忽略它,而 webkit 的瀏覽器不會。

最簡單的解決方案就是從你的代碼中刪除 html 標簽,瞧:

var p = $('body');
$( ".info" ).text( "scrollTop:" + p.scrollTop() );

去除height: 100%; from html 和 body 標簽可以解決這個問題。

原因是您可能已將 100% 設置為 html 和 body 元素的 height 屬性值。 如果將 html 和 body 元素的 height 屬性設置為 100%,則它們的高度等於文檔的高度。

有同樣的問題。 scrollTop() 適用於某些塊而不是文檔或正文。 要使此方法起作用,您應該為塊添加高度和溢出樣式:

#scrollParag {
    height: 500px;
    overflow-y: auto;
}

接着:

var scrolParag = document.getElementById('scrollParag');
 alert(scrolParag.scrollTop); // works!

Scroll Top 也總是為我返回 0。 我用它來將焦點放在頁面上的特定元素上。 我使用了另一種方法來做到這一點。

document.getElementById("elementID").scrollIntoView();

在手機、平板電腦和台式機上對我來說效果很好。

var bodyScrollTop = Math.max(document.scrollingElement.scrollTop, document.documentElement.scrollTop) 

應該適用於現代瀏覽器。

順便說一句,您似乎應該使用

$("body").scrollTop()

代替

$(".some-class").scrollTop

這就是為什么我被卡住了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM