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 相关文章推荐
经典的带阴影的可拖动的浮动层
Jun 26 Javascript
jquery实现当滑动到一定位置时固定效果
Jun 17 Javascript
JS实现可点击展开与关闭的左侧广告代码
Sep 02 Javascript
JavaScript实现的多种鼠标拖放效果
Nov 03 Javascript
学习JavaScript设计模式(策略模式)
Nov 26 Javascript
卸载安装Node.js与npm过程详解
Aug 15 Javascript
详解jQuery中关于Ajax的几个常用的函数
Jul 17 jQuery
一文让你彻底搞清楚javascript中的require、import与export
Sep 24 Javascript
AngularJS 仿微信图片手势缩放的实例
Sep 28 Javascript
JavaScript实现封闭区域布尔运算的示例代码
Jun 25 Javascript
vue如何使用外部特殊字体的操作
Jul 30 Javascript
JavaScript缓动动画函数的封装方法
Nov 25 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 柱状图实现代码
2009/12/04 PHP
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
浅谈discuz密码加密的方式
2014/05/22 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
PHP简单生成缩略图相册的方法
2015/07/29 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
2014/12/15 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
JavaScript中的this使用详解
2016/07/27 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
canvas绘图不清晰的解决方案
2017/02/28 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
美国婚礼装饰和活动用品批发供应商:Event Decor Direct
2018/10/12 全球购物
给水工程专业毕业生自荐信
2014/01/28 职场文书
商场租赁意向书
2014/07/30 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书