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 this关键字的问题
Jan 09 Javascript
js的逻辑运算符 ||
May 31 Javascript
Javascript查询DBpedia小应用实例学习
Mar 07 Javascript
js获得参数的getParameter使用示例
Feb 26 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
Feb 03 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
Oct 22 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
Aug 05 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
Sep 08 Javascript
jQuery焦点图轮播效果实现方法
Dec 19 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
Oct 01 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
Nov 10 jQuery
微信小程序云开发(数据库)详解
May 17 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中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
jQuery 删除/替换DOM元素的几种方式
2014/05/20 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
乌克兰第一的珠宝网上商店:Gold.ua
2019/11/29 全球购物
小班下学期评语
2014/05/04 职场文书
产品生产计划书
2014/05/07 职场文书
汽修专业自荐信
2014/07/07 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
2015年教研组工作总结
2015/05/04 职场文书
推广普通话主题班会
2015/08/17 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang