jQuery检测滚动条(scroll)是否到达底部

一、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中的。

<div id="div1" style="overflow-y:auto; overflow-x:hidden; height:500px;">
  <div style="height:750px;">
  </div>
</div>

由于内部的div标签高度比外部的长,并且外部的div允许自动出现垂直滚动条,所以用浏览器打开后,可以看到垂直滚动条。

那么,这里的外部div 的scrollTop、scrollHeight 属性到底是什么呢?

实际上,在js代码里,滚动条是被抽象为一个“点”来对待的。scrollHeight其实不是“滚动条的高度”(b),而是表示滚动条需要滚动的高度,即内部div的高度750px。而scrollTop表示滚动条(一个点)当前的位置在750px里占了多少。

判断垂直滚动条是否到达底部

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta http-equiv="content-type" content="text/html;charset=utf-8">
     <title>下拉滚动条滚到底部了吗?</title>
     <script language="javascript" src="jquery-1.4.2.min.js" mce_src="jquery-1.4.2.min.js"></script>
     <script language="javascript">
     $(document).ready(function (){
       var nScrollHight = 0; //滚动距离总长(注意不是滚动条的长度)
       var nScrollTop = 0;   //滚动到的当前位置
       var nDivHight = $("#div1").height();
       $("#div1").scroll(function(){
         nScrollHight = $(this)[0].scrollHeight;
         nScrollTop = $(this)[0].scrollTop;
     var paddingBottom = parseInt( $(this).css(‘padding-bottom‘) ),paddingTop = parseInt( $(this).css(‘padding-top‘) );
         if(nScrollTop + paddingBottom + paddingTop + nDivHight >= nScrollHight)
           alert("滚动条到底部了");
         });
     });
     </script>
   <body>
   <div id="div1" style="overflow-y:auto; overflow-x:hidden; height:500px;">
     <div style="background-color:#ccc; height:750px;">IE 和 FF 下测试通过</div>
   </div>
   </body>
   </html>

代码解说:
   内部div高度为750,外部div高度为500,所以垂直滚动条需要滚动750-500=250的距离,就会到达底部,参见语句nScrollTop + nDivHight >= nScrollHight。
   程序中,在外部div的scroll(滚动)事件中侦测和执行if判断语句,是非常消耗CPU资源的。用鼠标拖拉滚动条,只要有一个像素的变动就会触发该事件。但点击滚动条两头的箭头,事件触发的频率会低得多。所以滚动条的scroll事件要谨慎使用。

本示例判断的是没有水平滚动条的情况,在有水平滚动条时,情况会有细小的变化,所以nScrollTop + nDivHight >=
nScrollHight语句中,需要用“>=”比较运算符,而没有水平滚动条的时候,等号“=”就足够了。大家可以实际测试一下。还可以判断水平滚动条是否滚动到头了。

、jQuery滚动条到达底部加载数据

        msg_list_loading = false;

    $(‘.msg_list‘).on(‘scroll‘, function(){
        if ( ! msg_list_loading ){
            load_more_msg();
        }
    })

    function load_more_msg(){

        var msg_list = $(‘.msg_list‘);

        if (nScrollTop + paddingBottom + paddingTop + nDivHight >= nScrollHight ) {
            msg_list_loading = true;
            msg_list.append(‘<div class="loading"></div>‘);
            $.get(‘ajax_data.html‘).done(function( data ){
                msg_list.find(".loading").remove();
                msg_list.append( data );
                msg_list_loading = false;
            });

        }
    } 
时间: 2024-10-11 06:18:54

jQuery检测滚动条(scroll)是否到达底部的相关文章

jQuery 的 Div 标签滚动条属性及判断垂直滚动条是否到达底部

转自:http://blog.163.com/[email protected]/blog/static/1284651702010894509982/ 关于 jQuery 的 Div 标签的滚动条的概念,没有几个人能够完全.正确搞明白的. 我知道很多人不同意我的观点.但是如果去百度上搜素,与 jQuery 滚动条有关的信息,都是关于滚动条外观和滚动条插件的.我最近在制作一个滚动条相关的页面效果,去 CSDN 论坛里提问,得到了一段代码,还是错误的. jQuery 里和滚动条有关的概念很多,但是

jQuery判断滚动条是上滚还是下滚,且是否到达底部或顶部

jQuery判断滚动条是上滚还是下滚,且是否到达底部或顶部:http://www.haorooms.com/post/jquery_scroll_upanddown —————————————————————————————————————— //滚动条滚动加载更多内容   //判断滚动方向   function scroll(fn) {        var beforeScrollTop = document.body.scrollTop || document.documentElemen

jquery 判断滚动条到达了底部和顶端的方法

这篇文章主要介绍了jquery 判断滚动条到达了底部和到达顶端的方法,需要的朋友可以参考下 复制代码 代码如下: $(document).height()  //是获取整个页面的高度 $(window).height()  //是获取当前也就是浏览器所能看到的页面的那部分的高度.这个大小在你缩放浏览器窗口大小时会改变,与document是不一样的 要获取顶端,只需要获取到scrollTop()==0的时候就是顶端: 要获取底端,只要获取scrollTop()>=$(document).heigh

jquery判断滚动条是否到达顶部或者底部

<script> $(function(){ $(window).scroll(function(){ //离顶部的距离=0 //方法一:var isTop=$(this).scrollTop(); //方法二:var isTop=$(document).scrollTop(); //var isTop=$("body").scrollTop();//ie错误 //var isTop=$(document.body).scrollTop();//ie错误 //可视窗口大小+

JQuery判断滚动条是否到达顶部及是否到达底部

$(document).ready(function() { $(window).scroll(function() { if ($(document).scrollTop()<=0){ alert("滚动条已经到达顶部"); } if ($(document).scrollTop() >= $(document).height() - $(window).height()) { alert("滚动条已经到达底部!"); } }); });

Jquery 判断滚动条到达顶部或底部 (可用于上拉下拉加载刷新)

<script type="text/javascript"> $(document).ready(function() { $(window).scroll(function() { //$(document).scrollTop() 获取垂直滚动的距离 //$(document).scrollLeft() 这是获取水平滚动条的距离 if ($(document).scrollTop() <= 0) { alert("滚动条已经到达顶部为0");

js判断滚动条是否到达底部

$(document).ready(function() { var nScrollHight = 0; //滚动距离总长(注意不是滚动条的长度) var nScrollTop = 0; //滚动到的当前位置 var nDivHight = $(".datagrid-body").height();//div高度 $(".datagrid-body").scroll(function() { nScrollHight = $(this)[0].scrollHeigh

jQuery实现滚动条一直处于最底部

相信大家有时候在展示一些实时数据展示并且数据量很大的时候,因为无法在同一页面看到最有效的数据,所以我们需要将滚动条至于底部,以便我们看到最需要的数据和信息:这里很明显的例子那拿windows的ping来说吧,当我们长ping的时候,这时候数据会越来越多,而且还是累加的,新数据又全部在后面,所以这个时候让滚动条一直处于底部就大有作为了! 大伙可以看一下,在windows的cmd中执行ping 地址 -t,这时候就会一直ping,刚开始的时候,数据可能比较小,同一屏就能看到 但时间一长,数据就越来越

jQuery自定义滚动条样式插件mCustomScrollbar

如果你构建一个很有特色和创意的网页,那么肯定希望定义网页中的滚动条样式,这方面的 jQuery 插件比较不错的,有两个:jScrollPane 和 mCustomScrollbar. 关于 jScrollPane,大家见过的可能比较多,但是这个插件太过于古老而且功能不强大,效果在几年前非常不错,但是放在现在就不好说了.所以我选择了后者:mCustomScrollbar.下图是两者官方示例的简单对比: 本文就是介绍如何使用 mCustomScrollbar 这个插件,大部分的内容是翻译自 mCus