一个用jquery写的判断div滚动条到底部的方法【推荐】


Posted in Javascript onApril 29, 2016

jQuery 里和滚动条有关的概念很多,但是有三个属性和滚动条的拖动有关,就是:scrollTop、scrollLeft、scrollHeight。其中 scrollHeight 属性,互联网上几乎搜素不到关于它的应用技巧,而我正好需要用到它。

我们现在只探讨和垂直滚动有关的 scrollTop、scrollHeight 属性。

一、滚动条有关属性的正确理解:

假设有以下Html代码:

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

由于内部的div标签高度比外部的长,并且外部的div允许自动出现垂直滚动条,所以用浏览器打开后,可以看到垂直滚动条。滚动条向下拖动一段距离,看到的页面效果如下(右部的a、b是我抓图后,用PS标出来的):

一个用jquery写的判断div滚动条到底部的方法【推荐】

那么,这里的外部div 的scrollTop、scrollHeight 属性到底是什么呢?

有人说,scrollTop等于图中标出的a。scrollHeight 等于外部div的高度500px。其实,都不对。

其实,图中标出的a、b,对我们编程写js代码没有任何具体意义,它仅仅具有象征意义。

实际上,在js代码里,滚动条是被抽象为一个“点”来对待的。scrollHeight其实不是“滚动条的高度”(b),而是表示滚动条需要滚动的高度,即内部div的高度750px。而scrollTop表示滚动条(一个点)当前的位置在750px里占了多少,不是图中标出的a。

这时,我们很叹服Windows的设计者,滚动条设计的如此形象美妙,欺骗了多少头脑简单的鼠标操作员。a和b的距离分别标识滚动条滚动了和需要滚动的距离,它们之间分别有一个对应的关系,但这些不是我们这些开发应用程序的程序员考虑的,是设计操作系统GUI图形接口的程序员考虑的。

2判断垂直滚动条是否到达底部

廓清了以上的概念,编码其实就比较简单了, 以下是示例代码:

<!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;  //滚动到的当前位置
    var nDivHight = $("#div1").height();

    $("#div1").scroll(function(){
     nScrollHight = $(this)[0].scrollHeight;
     nScrollTop = $(this)[0].scrollTop;
     if(nScrollTop + 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>

代码解说:

内部div高度为750,外部div高度为500,所以垂直滚动条需要滚动750-500=250的距离,就会到达底部,参见语句nScrollTop + nDivHight >= nScrollHight。

程序中,在外部div的scroll(滚动)事件中侦测和执行if判断语句,是非常消耗CPU资源的。用鼠标拖拉滚动条,只要有一个像素的变动就会触发该事件。但点击滚动条两头的箭头,事件触发的频率会低得多。所以滚动条的scroll事件要谨慎使用。

本示例判断的是没有水平滚动条的情况,在有水平滚动条时,情况会有细小的变化,所以nScrollTop + nDivHight >= nScrollHight语句中,需要用“>=”比较运算符,而没有水平滚动条的时候,等号“=”就足够了。大家可以实际测试一下。还可以判断水平滚动条是否滚动到头了。

以上这篇一个用jquery写的判断div滚动条到底部的方法【推荐】就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 小型打飞机游戏实现原理说明
Oct 28 Javascript
Javascript连接多个数组不用concat来解决
Mar 24 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
Aug 24 Javascript
使用jQuery给input标签设置默认值
Jun 20 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
Feb 22 Javascript
深入理解AngularJs-scope的脏检查(一)
Jun 19 Javascript
浅谈webpack打包之后的文件过大的解决方法
Mar 07 Javascript
解决Layui 表单提交数据为空的问题
Aug 15 Javascript
通过JS深度判断两个对象字段相同
Jun 14 Javascript
jQuery实现的记住帐号密码功能完整示例
Aug 03 jQuery
JS数组Reduce方法功能与用法实例详解
Apr 29 Javascript
JS数组去重详情
Nov 07 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
Apr 29 #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
You might like
php SQL之where语句生成器
2009/03/24 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
javascript 解决表单仍然提交即使监听处理函数返回false
2010/03/14 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
javascript suggest效果 自动完成实现代码分享
2012/02/17 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
微信小程序实现图片放大预览功能
2020/10/22 Javascript
vue-cli3使用 DllPlugin 实现预编译提升构建速度
2019/04/24 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
深入分析jQuery.one() 函数
2020/06/03 jQuery
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
Python实现单词翻译功能
2017/06/06 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
Django中的静态文件管理过程解析
2019/08/01 Python
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
全球性的在线购物网站:Zapals
2017/03/22 全球购物
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
管理科学大学生求职信
2013/11/13 职场文书
施工资料员岗位职责
2014/01/06 职场文书
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
班级读书活动总结
2014/06/30 职场文书
出国留学自荐信模板
2015/03/06 职场文书
Python图片处理之图片裁剪教程
2021/05/27 Python