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 相关文章推荐
js去字符串前后空格5种实现方法及比较
Apr 03 Javascript
IE的事件传递-event.cancelBubble示例介绍
Jan 12 Javascript
输入框过滤非数字的js代码
Sep 18 Javascript
JavaScript入门系列之知识点总结
Mar 24 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
Feb 10 Javascript
js实现适配不同的屏幕大小
Apr 10 Javascript
bootstrap suggest下拉框使用详解
Apr 10 Javascript
vue2.0 常用的 UI 库实例讲解
Dec 12 Javascript
vue中axios解决跨域问题和拦截器的使用方法
Mar 07 Javascript
Vue 中axios配置实例详解
Jul 27 Javascript
jquery的$().each和$.each的区别
Jan 18 jQuery
vue 强制组件重新渲染(重置)的两种方案
Oct 29 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替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
JavaScript 布尔操作符解析  &amp;&amp; || !
2012/08/10 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
Vue数据双向绑定底层实现原理
2019/11/22 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
外贸实习生自荐信范文
2013/11/24 职场文书
电子商务专业学生的自我鉴定
2013/11/28 职场文书
教师通用专业自荐书范文
2014/02/11 职场文书
国培教师自我鉴定
2014/02/12 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
家长给学校的建议书
2014/05/15 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
安全生产标语口号
2015/12/26 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫
python中validators库的使用方法详解
2022/09/23 Python