zoukankan      html  css  js  c++  java
  • jQuery——检测滚动条是否到达底部

    一、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中滚动条到达底部

    首先需要理解几个概念:
    scrollHeight:表示滚动条需要滚动的高度,即内部div,10000px;
    scrollTop: 表示滚动条滚动的高度,可能大于外部div 500px;
    也就是说scrollDiv的高度+scrollTop滚动的最大高度=scrollHeight。

    $(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("到达底部了");
    		}
    	});
    });
    

    flag可以使用分页参数控制page,实现懒加载效果。

    $(".daiwoyuejuan-table").scroll(function() {
    	if(page >= total_page) {
    		//数据加载中
    		return;
    	}
    	var divHeight = $(this).height();
    	var nScrollHeight = $(this)[0].scrollHeight;
    	var nScrollTop = $(this)[0].scrollTop;
    	//console.log(nScrollHeight+"--"+nScrollTop+"--"+divHeight);
    	if(nScrollTop + divHeight >= nScrollHeight) {
    		//请求数据
    		page = page + 1;
    		index();
    	}
    });
    
  • 相关阅读:
    2017年第八蓝桥杯C/C++ A组国赛 —— 第二题:生命游戏
    451. 根据字符出现频率排序
    剑指 Offer 40. 最小的k个数
    list使用详解
    STL---priority_queue
    1046. 最后一块石头的重量
    739. 每日温度
    921. 使括号有效的最少添加
    STL----stack
    173. 二叉搜索树迭代器
  • 原文地址:https://www.cnblogs.com/bky-lzw/p/7748154.html
Copyright © 2011-2022 走看看