日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jquery判断div滚动条到底部

發(fā)布時間:2025/5/22 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jquery判断div滚动条到底部 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

???jQuery 里和滾動條有關(guān)的概念很多,但是有三個屬性和滾動條的拖動有關(guān),就是:scrollTop、scrollLeft、scrollHeight。其中 scrollHeight 屬性,互聯(lián)網(wǎng)上幾乎搜素不到關(guān)于它的應(yīng)用技巧,而我正好需要用到它。

? ?我們現(xiàn)在只探討和垂直滾動有關(guān)的 scrollTop、scrollHeight 屬性。

? ?一、滾動條有關(guān)屬性的正確理解:

? ?假設(shè)有以下Html代碼:

<div id="div1" style="overflow-y:auto; overflow-x:hidden; height:500px;"><div style="height:750px;"></div> </div>

由于內(nèi)部的div標簽高度比外部的長,并且外部的div允許自動出現(xiàn)垂直滾動條,所以用瀏覽器打開后,可以看到垂直滾動條。滾動條向下拖動一段距離,看到的頁面效果如下(右部的a、b是我抓圖后,用PS標出來的):

那么,這里的外部div 的scrollTop、scrollHeight 屬性到底是什么呢?
? ?有人說,scrollTop等于圖中標出的a。scrollHeight 等于外部div的高度500px。其實,都不對。
? ?其實,圖中標出的a、b,對我們編程寫js代碼沒有任何具體意義,它僅僅具有象征意義。
? ?實際上,在js代碼里,滾動條是被抽象為一個“點”來對待的。scrollHeight其實不是“滾動條的高度”(b),而是表示滾動條需要滾動的高度,即內(nèi)部div的高度750px。而scrollTop表示滾動條(一個點)當(dāng)前的位置在750px里占了多少,不是圖中標出的a。

?這時,我們很嘆服Windows的設(shè)計者,滾動條設(shè)計的如此形象美妙,欺騙了多少頭腦簡單的鼠標操作員。a和b的距離分別標識滾動條滾動了和需要滾動的距離,它們之間分別有一個對應(yīng)的關(guān)系,但這些不是我們這些開發(fā)應(yīng)用程序的程序員考慮的,是設(shè)計操作系統(tǒng)GUI圖形接口的程序員考慮的。

判斷垂直滾動條是否到達底部

廓清了以上的概念,編碼其實就比較簡單了, 以下是示例代碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><title>下拉滾動條滾到底部了嗎?</title><script language="javascript" src="jquery-1.4.2.min.js" mce_src="jquery-1.4.2.min.js"></script><script language="javascript">$(document).ready(function (){var nScrollHight = 0; //滾動距離總長(注意不是滾動條的長度)var nScrollTop = 0; //滾動到的當(dāng)前位置var nDivHight = $("#div1").height();$("#div1").scroll(function(){nScrollHight = $(this)[0].scrollHeight;nScrollTop = $(this)[0].scrollTop;
     var paddingBottom = parseInt( $(this).css('padding-bottom') ),paddingTop = parseInt( $(this).css('padding-top') );
if(nScrollTop + paddingBottom + paddingTop + nDivHight >= nScrollHight)alert("滾動條到底部了");});});</script><body><div id="div1" style="overflow-y:auto; overflow-x:hidden; height:500px;"><div style="background-color:#ccc; height:750px;">IE 和 FF 下測試通過</div></div></body></html>

???代碼解說:
? ?內(nèi)部div高度為750,外部div高度為500,所以垂直滾動條需要滾動750-500=250的距離,就會到達底部,參見語句nScrollTop + nDivHight >= nScrollHight。
? ?程序中,在外部div的scroll(滾動)事件中偵測和執(zhí)行if判斷語句,是非常消耗CPU資源的。用鼠標拖拉滾動條,只要有一個像素的變動就會觸發(fā)該事件。但點擊滾動條兩頭的箭頭,事件觸發(fā)的頻率會低得多。所以滾動條的scroll事件要謹慎使用。
? ?本示例判斷的是沒有水平滾動條的情況,在有水平滾動條時,情況會有細小的變化,所以nScrollTop + nDivHight >= nScrollHight語句中,需要用“>=”比較運算符,而沒有水平滾動條的時候,等號“=”就足夠了。大家可以實際測試一下。還可以判斷水平滾動條是否滾動到頭了。

?

作者:Tyler Ning
出處:http://www.cnblogs.com/tylerdonet/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過以下郵箱地址williamningdong@gmail.com ?聯(lián)系我,非常感謝。

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的jquery判断div滚动条到底部的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。