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 相关文章推荐
初试jQuery EasyUI 使用介绍
Apr 01 Javascript
jQuery里filter()函数与find()函数用法分析
Jun 24 Javascript
js生成随机数的方法实例
Oct 16 Javascript
JavaScript学习笔记之数组随机排序
Mar 23 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
May 05 Javascript
基于Bootstrap3表格插件和分页插件实例详解
May 17 Javascript
JS实现获取剪贴板内容的方法
Jun 21 Javascript
vue.js选中动态绑定的radio的指定项
Jun 02 Javascript
详解jQuery中关于Ajax的几个常用的函数
Jul 17 jQuery
es6学习之解构时应该注意的点
Aug 29 Javascript
Vue.js devtool插件安装后无法使用的解决办法
Nov 27 Javascript
小程序登录之支付宝授权的实现示例
Dec 13 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
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
2013/06/24 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
python实现的解析crontab配置文件代码
2014/06/30 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
python障碍式期权定价公式
2019/07/19 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
小学教研工作制度
2014/01/15 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
保管员岗位职责
2015/02/14 职场文书
公司欠款证明
2015/06/24 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书