一個(gè)用jquery寫的判斷div滾動(dòng)條到底部的方法【推薦】
jQuery 里和滾動(dòng)條有關(guān)的概念很多,但是有三個(gè)屬性和滾動(dòng)條的拖動(dòng)有關(guān),就是:scrollTop、scrollLeft、scrollHeight。其中 scrollHeight 屬性,互聯(lián)網(wǎng)上幾乎搜素不到關(guān)于它的應(yīng)用技巧,而我正好需要用到它。
我們現(xiàn)在只探討和垂直滾動(dòng)有關(guān)的 scrollTop、scrollHeight 屬性。
一、滾動(dòng)條有關(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標(biāo)簽高度比外部的長(zhǎng),并且外部的div允許自動(dòng)出現(xiàn)垂直滾動(dòng)條,所以用瀏覽器打開后,可以看到垂直滾動(dòng)條。滾動(dòng)條向下拖動(dòng)一段距離,看到的頁(yè)面效果如下(右部的a、b是我抓圖后,用PS標(biāo)出來(lái)的):
那么,這里的外部div 的scrollTop、scrollHeight 屬性到底是什么呢?
有人說(shuō),scrollTop等于圖中標(biāo)出的a。scrollHeight 等于外部div的高度500px。其實(shí),都不對(duì)。
其實(shí),圖中標(biāo)出的a、b,對(duì)我們編程寫js代碼沒有任何具體意義,它僅僅具有象征意義。
實(shí)際上,在js代碼里,滾動(dòng)條是被抽象為一個(gè)“點(diǎn)”來(lái)對(duì)待的。scrollHeight其實(shí)不是“滾動(dòng)條的高度”(b),而是表示滾動(dòng)條需要滾動(dòng)的高度,即內(nèi)部div的高度750px。而scrollTop表示滾動(dòng)條(一個(gè)點(diǎn))當(dāng)前的位置在750px里占了多少,不是圖中標(biāo)出的a。
這時(shí),我們很嘆服Windows的設(shè)計(jì)者,滾動(dòng)條設(shè)計(jì)的如此形象美妙,欺騙了多少頭腦簡(jiǎn)單的鼠標(biāo)操作員。a和b的距離分別標(biāo)識(shí)滾動(dòng)條滾動(dòng)了和需要滾動(dòng)的距離,它們之間分別有一個(gè)對(duì)應(yīng)的關(guān)系,但這些不是我們這些開發(fā)應(yīng)用程序的程序員考慮的,是設(shè)計(jì)操作系統(tǒng)GUI圖形接口的程序員考慮的。
2判斷垂直滾動(dòng)條是否到達(dá)底部
廓清了以上的概念,編碼其實(shí)就比較簡(jiǎn)單了, 以下是示例代碼:
<!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>下拉滾動(dòng)條滾到底部了嗎?</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; //滾動(dòng)距離總長(zhǎng)(注意不是滾動(dòng)條的長(zhǎng)度) var nScrollTop = 0; //滾動(dòng)到的當(dāng)前位置 var nDivHight = $("#div1").height(); $("#div1").scroll(function(){ nScrollHight = $(this)[0].scrollHeight; nScrollTop = $(this)[0].scrollTop; if(nScrollTop + nDivHight >= nScrollHight) alert("滾動(dòng)條到底部了"); }); }); </script> <body> <div id="div1" style="overflow-y:auto; overflow-x:hidden; height:500px;"> <div style="background-color:#ccc; height:750px;">IE 和 FF 下測(cè)試通過(guò)</div> </div> </body> </html>
代碼解說(shuō):
內(nèi)部div高度為750,外部div高度為500,所以垂直滾動(dòng)條需要滾動(dòng)750-500=250的距離,就會(huì)到達(dá)底部,參見語(yǔ)句nScrollTop + nDivHight >= nScrollHight。
程序中,在外部div的scroll(滾動(dòng))事件中偵測(cè)和執(zhí)行if判斷語(yǔ)句,是非常消耗CPU資源的。用鼠標(biāo)拖拉滾動(dòng)條,只要有一個(gè)像素的變動(dòng)就會(huì)觸發(fā)該事件。但點(diǎn)擊滾動(dòng)條兩頭的箭頭,事件觸發(fā)的頻率會(huì)低得多。所以滾動(dòng)條的scroll事件要謹(jǐn)慎使用。
本示例判斷的是沒有水平滾動(dòng)條的情況,在有水平滾動(dòng)條時(shí),情況會(huì)有細(xì)小的變化,所以nScrollTop + nDivHight >= nScrollHight語(yǔ)句中,需要用“>=”比較運(yùn)算符,而沒有水平滾動(dòng)條的時(shí)候,等號(hào)“=”就足夠了。大家可以實(shí)際測(cè)試一下。還可以判斷水平滾動(dòng)條是否滾動(dòng)到頭了。
以上這篇一個(gè)用jquery寫的判斷div滾動(dòng)條到底部的方法【推薦】就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- jquery 判斷滾動(dòng)條到達(dá)了底部和頂端的方法
- jQuery判斷div隨滾動(dòng)條滾動(dòng)到一定位置后停止
- jQuery判斷是否存在滾動(dòng)條的簡(jiǎn)單方法
- 使用jQuery判斷瀏覽器滾動(dòng)條位置的方法
- 淺析jquery如何判斷滾動(dòng)條滾到頁(yè)面底部并執(zhí)行事件
- jQuery實(shí)現(xiàn)判斷滾動(dòng)條到底部
- jquery判斷滾動(dòng)條距離頂部的距離方法
- jQuery檢測(cè)滾動(dòng)條是否到達(dá)底部
- jQuery彈出層后禁用底部滾動(dòng)條(移動(dòng)端關(guān)閉回到原位置)
- jQuery實(shí)現(xiàn)判斷滾動(dòng)條滾動(dòng)到document底部的方法分析
相關(guān)文章
Easyui筆記2:實(shí)現(xiàn)datagrid多行刪除的示例代碼
本篇文章主要介紹了Easyui筆記2:實(shí)現(xiàn)datagrid多行刪除,詳細(xì)介紹了完成一個(gè)多行勾選并刪除的功能。有興趣的可以了解一下。2017-01-01js/jq仿window文件夾移動(dòng)/剪切/復(fù)制等操作代碼
本篇文章主要介紹了js/jq仿window文件夾移動(dòng)/剪切/復(fù)制等操作代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-03-03jQuery源碼分析-03構(gòu)造jQuery對(duì)象-工具函數(shù)
jQuery源碼分析-03構(gòu)造jQuery對(duì)象-工具函數(shù),需要的朋友可以參考下。2011-11-11jQuery 獲取屏幕高度、寬度的簡(jiǎn)單實(shí)現(xiàn)案例
下面小編就為大家?guī)?lái)一篇jQuery 獲取屏幕高度、寬度的簡(jiǎn)單實(shí)現(xiàn)案例。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05詳解jQuery的表單驗(yàn)證插件--Validation
jQuery Validate 插件為表單提供了強(qiáng)大的驗(yàn)證功能,讓客戶端表單驗(yàn)證變得更簡(jiǎn)單,同時(shí)提供了大量的定制選項(xiàng),滿足應(yīng)用程序各種需求。本文主要對(duì)表單驗(yàn)證插件-Validation進(jìn)行案例分析,詳細(xì)介紹,具有很好的參考價(jià)值,需要的朋友一起來(lái)看下吧2016-12-12用Jquery選擇器計(jì)算table中的某一列某一行的合計(jì)
本節(jié)主要介紹了用Jquery選擇器計(jì)算table中的某一列某一行的合計(jì),需要的朋友可以參考下2014-08-08jQuery 連續(xù)列表實(shí)現(xiàn)代碼
你有沒有手工的編寫過(guò)一些重復(fù)的代碼?你也覺得它們是如此的無(wú)聊吧。好了,這里有更好的解決辦法。2009-12-12