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下将字符串当函数执行的方法
Jul 13 Javascript
如何解决Jquery库及其他库之间的$命名冲突
Sep 15 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
Aug 05 Javascript
js阻止浏览器默认行为的简单实例
May 15 Javascript
jQuery添加options点击事件并传值实例代码
May 18 Javascript
jQuery ajax应用总结
Jun 02 Javascript
分享JS数组求和与求最大值的方法
Aug 11 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
Feb 20 Javascript
Bootstrap datepicker日期选择器插件使用详解
Jul 26 Javascript
浅谈React深度编程之受控组件与非受控组件
Dec 26 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
Mar 16 jQuery
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开发中常用的8个小技巧
2008/08/27 PHP
PHP注释实例技巧
2008/10/03 PHP
浅析php中jsonp的跨域实例
2013/06/21 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
php遍历删除整个目录及文件的方法
2015/03/13 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
Javascript模块化编程(三)require.js的用法及功能介绍
2013/01/17 Javascript
javascript full screen 全屏显示页面元素的方法
2013/09/27 Javascript
JavaScript中提前声明变量或函数例子
2014/11/12 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
javascript实现的左右无缝滚动效果
2016/09/19 Javascript
微信小程序 详解页面跳转与返回并回传数据
2017/02/13 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
JS防抖和节流实例解析
2019/09/24 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
Python中os和shutil模块实用方法集锦
2014/05/13 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
七一讲话心得体会
2014/09/05 职场文书
自我查摆剖析材料
2014/10/11 职场文书