浅析jquery如何判断滚动条滚到页面底部并执行事件


Posted in Javascript onApril 29, 2016

本文章向码农介绍jquery如何判断滚动条滚到页面底部并执行事件。首先理解三个dom元素,分别是:clientHeight、offsetHeight、scrollTop。

首先理解三个dom元素,分别是:clientHeight、offsetHeight、scrollTop。

clientHeight:这个元素的高度,占用整个空间的高度,所以,如果一个div有滚动条,那个这个高度则是不包括滚动条没显示出来的下面部分的内容。而只是单纯的DIV的高度。

offsetHeight:是指元素内容的高度。依照上面的,那这个高度呢就是DIV内部的高度,包括可见部分及以滚动条下面的不可见部分。

scrollTop:这个是什么呢?他可以理解为滚动条可以滚动的长度。

举例,如果一个DIV高度是400px(即clientHeight为400),而里面的内容是一个很长的列表,内容的高度是1000px(即offsetHeight为1000)。那么,可见部分我们看到400px,1000px的内容中还有600px不可见。而这不可见的部分呢,正是我们通过拉动滚动条才能把这一部分显示出来。你如果滚动条不拉动,此时scrollTop为0,如果你把滚动条拉到底,显示出列表最下面的部分,此时,scrollTop为600。 所以scrollTop的取值区间为[0, 600]。 所以这个600可以理解为滚动条可以滚动的长度。

理解完上面的这个概念之后。要判断是否滚动到底部就很好做了。

首先,我们拉动滚动条,从最上面拉到最下面,变化的是scrollTop的值,而这个值是有一个区间的。
这个区间是: [0, (offsetHeight - clientHeight)]
即,滚动条拉动的整个过程的变化在 0 到 (offsetHeight ? clientHeight) 范围之内。

1、判断滚动条滚动到最底端: scrollTop == (offsetHeight ? clientHeight)
2、在滚动条距离底端50px以内: (offsetHeight ? clientHeight) ? scrollTop <= 50
3、在滚动条距离底端5%以内: scrollTop / (offsetHeight ? clientHeight) >= 0.95

如上。
如果要实现拉到底部自动加载内容。只要注册个滚动条事件:

scrollBottomTest =function(){
   $("#contain").scroll(function(){
     var $this =$(this),
     viewH =$(this).height(),//可见高度
     contentH =$(this).get(0).scrollHeight,//内容高度
     scrollTop =$(this).scrollTop();//滚动高度
    //if(contentH - viewH - scrollTop <= 100) { //到达底部100px时,加载新内容
    if(scrollTop/(contentH -viewH)>=0.95){ //到达底部100px时,加载新内容
    // 这里加载数据..
    }
   });
}

以上这篇浅析jquery如何判断滚动条滚到页面底部并执行事件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 技巧和窍门整理(8个)
Apr 22 Javascript
初窥JQuery(一)jquery选择符 必备知识点
Nov 25 Javascript
JavaScript使用Prototype实现面向对象的方法
Apr 14 Javascript
第九章之路径分页标签与徽章组件
Apr 25 Javascript
jQuery无缝轮播图代码
Dec 22 Javascript
常用jQuery选择器汇总
Feb 02 Javascript
Vue.js 插件开发详解
Mar 29 Javascript
详解React Native顶|底部导航使用小技巧
Sep 14 Javascript
JS实现二维数组横纵列转置的方法
Apr 17 Javascript
Node.js中你不可不精的Stream(流)
Jun 08 Javascript
vue实现行列转换的一种方法
Aug 06 Javascript
Ant Design Pro 下实现文件下载的实现代码
Dec 03 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
Apr 29 #Javascript
浅析Javascript中bind()方法的使用与实现
Apr 29 #Javascript
深入剖析JavaScript中的函数currying柯里化
Apr 29 #Javascript
javascript中利用柯里化函数实现bind方法【推荐】
Apr 29 #Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
Apr 29 #Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
Apr 29 #Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
Apr 29 #Javascript
You might like
PHP4实际应用经验篇(7)
2006/10/09 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
2014/06/11 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
JS实现TITLE悬停长久显示效果完整示例
2020/02/11 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
JavaScript日期库date-fn.js使用方法解析
2020/09/09 Javascript
tornado捕获和处理404错误的方法
2014/02/26 Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
2014/11/21 Python
Python标准库os.path包、glob包使用实例
2014/11/25 Python
python编程羊车门问题代码示例
2017/10/25 Python
对python中的for循环和range内置函数详解
2018/04/17 Python
Django后台admin的使用详解
2019/07/08 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
python实现对变位词的判断方法
2020/04/05 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
化学专业毕业生自荐信
2013/11/15 职场文书
护士的岗位职责
2013/12/04 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
英语课外活动总结
2014/08/27 职场文书
公司辞职信模板
2015/05/13 职场文书
Mac环境Nginx配置和访问本地静态资源的实现
2021/03/31 Servers
Python中第三方库Faker的使用详解
2022/04/02 Python
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers