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 相关文章推荐
在网页中使用document.write时遭遇的奇怪问题
Aug 24 Javascript
JQuery对id中含有特殊字符的转义处理示例
Sep 06 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
Dec 04 Javascript
将中国标准时间转换成标准格式的代码
Mar 20 Javascript
JSON+HTML实现国家省市联动选择效果
May 18 Javascript
JavaScript实现文字与图片拖拽效果的方法
Feb 16 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
Apr 15 Javascript
javascript 定时器工作原理分析
Dec 03 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
Dec 12 Javascript
前端面试知识点锦集(JavaScript篇)
Dec 28 Javascript
对 Vue-Router 进行单元测试的方法
Nov 05 Javascript
js canvas实现五子棋小游戏
Jan 22 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/08/24 PHP
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
nodejs和php实现图片访问实时处理
2017/01/05 NodeJs
canvas实现粒子时钟效果
2017/02/06 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
详解@Vue/Cli 3 Invalid Host header 错误解决办法
2019/01/02 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
在vue项目中封装echarts的步骤
2020/12/25 Vue.js
Python中使用动态变量名的方法
2014/05/06 Python
python抽取指定url页面的title方法
2018/05/11 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
Django forms表单 select下拉框的传值实例
2019/07/19 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
解决Python中回文数和质数的问题
2019/11/24 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
python filecmp.dircmp实现递归比对两个目录的方法
2020/05/22 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
美国椅子和沙发制造商:La-Z-Boy
2020/10/25 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
2014年班主任自我评价范文
2014/04/23 职场文书
村党建工作汇报材料
2014/11/02 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js