jQuery检测滚动条是否到达底部


Posted in Javascript onDecember 15, 2015

一、jQuery检测浏览器window滚动条到达底部
jQuery获取位置和尺寸相关函数:
$(document).height()    获取整个页面的高度
$(window).height()    获取当前也就是浏览器所能看到的页面的那部分的高度。这个大小在你缩放浏览器窗口大小时会改变,与document是不一样的
scrollTop()    获取匹配元素相对滚动条顶部的偏移。
scrollLeft()    获取匹配元素相对滚动条左侧的偏移。
scroll([[data],fn])    当滚动条发生变化时触犯scroll事件
jQuery检测滚动条到达底部代码:

$(document).ready(function() {
  $(window).scroll(function() {
 
    if ($(document).scrollTop()<=0){
      alert("滚动条已经到达顶部为0");
    }
 
    if ($(document).scrollTop() >= $(document).height() - $(window).height()) {
      alert("滚动条已经到达底部为" + $(document).scrollTop());
    }
  });
});

二、jQuery检测div中滚动条到达底部
上半篇介绍了jQuery检测浏览器window滚动条到达底部,其实还并不理解scrollTop和scrollHeight概念,通常滚动条都是放在div中的。

jQuery检测滚动条是否到达底部

如下检测id为scroll_div滚动条到达底部事件:

<div id="scroll_div" style="overflow-y:auto; overflow-x:hidden;margin:100px;height:500px;border:1px solid red">
      <div style="height:10000px">
        来自于3water.com三水点靠木<br>
        来自于3water.com三水点靠木<br>
        来自于3water.com三水点靠木<br>
      </div>
    </div>

首先需要理解几个概念:
scrollHeight:表示滚动条需要滚动的高度,即内部div,10000px
scrollTop: 表示滚动条滚动的高度,可能大于外部div 500px
也就是说scrollDiv的高度+scrollTop滚动的最大高度=scrollHeight
于是检测div中div滚动条高度就简单了:

$(document).ready(function() {
  $("#scroll_div").scroll(function(){
    var divHeight = $(this).height();
    var nScrollHeight = $(this)[0].scrollHeight;
    var nScrollTop = $(this)[0].scrollTop;
    $("#input1").val(nScrollHeight);
    $("#input2").val(nScrollTop);
    $("#input3").val(divHeight);
    if(nScrollTop + divHeight >= nScrollHeight) {
      alert("到达底部了");
    }
  });
});

如果是异步加载数据,数据没加载完,又触犯了同一页的数据加载请求,我通常是加一个flag

$(document).ready(function() {
  var flag = false;
  $("#scroll_div").scroll(function(){
    
    if(flag){
      //数据加载中
      return false;
    }
    
    var divHeight = $(this).height();
    var nScrollHeight = $(this)[0].scrollHeight;
    var nScrollTop = $(this)[0].scrollTop;
    $("#input1").val(nScrollHeight);
    $("#input2").val(nScrollTop);
    $("#input3").val(divHeight);
    if(nScrollTop + divHeight >= nScrollHeight) {
      //请求数据
      flag = true;
      alert("到达底部了");
    }
  });
});
Javascript 相关文章推荐
JavaScript 获取当前时间戳的代码
Aug 05 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
Jun 14 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
Oct 15 Javascript
Javascript基础 函数“重载” 详细介绍
Oct 25 Javascript
详解AngularJS中module模块的导入导出
Dec 10 Javascript
jQuery Validate设置onkeyup验证的实例代码
Dec 09 Javascript
JS使用正则实现去掉字符串左右空格的方法
Dec 27 Javascript
jQuery 实现双击编辑表格功能
Jun 19 jQuery
深入理解Vue 的条件渲染和列表渲染
Sep 01 Javascript
详解webpack性能优化——DLL
Oct 20 Javascript
JS如何获取地址栏的参数实例讲解
Oct 06 Javascript
小程序点击图片实现png转jpg
Oct 22 Javascript
js实现根据身份证号自动生成出生日期
Dec 15 #Javascript
浅析javascript的return语句
Dec 15 #Javascript
轻松学习Javascript闭包函数
Dec 15 #Javascript
Javascript基于AJAX回调函数传递参数实例分析
Dec 15 #Javascript
javascript实现html页面之间参数传递的四种方法实例分析
Dec 15 #Javascript
js编写贪吃蛇的小游戏
Aug 24 #Javascript
javascript实现网页端解压并查看zip文件
Dec 15 #Javascript
You might like
php class类的用法详细总结
2013/10/17 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
jquery实现下拉框左右选择功能
2017/02/21 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python抽象基类用法实例分析
2015/06/04 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
美术专业个人自我评价
2014/01/18 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
园林技术个人的自我评价
2014/02/15 职场文书
四年大学自我鉴定
2014/02/17 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android