上拉加载更多----jQuery中的scroll事件

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42301962/article/details/102465072

scroll事件不触发,找到的原因是滚动区域必须设置固定高度,超出固定高度才会滚动

1.计算滚动区域高度可能会用到的jQuery函数

  • 有公用的底部
// 计算滚动区域到页面顶部的高度
var windowHeight = $(this).height();   //页面窗口高度
var sibHeight = $(".mui-slider-group").offset().top+50;    //计算滚动区域之外的高度,滚动区域到页面顶部的高度加上底部高度,50为底部导航栏的高度
var scrollHeight = windowHeight-sibHeight;   //滚动区域高度
$(".mui-slider-group").css("height",scrollHeight).css("overflow-y","scroll").css("overflow-x","hidden");   //动态设置滚动区域高度
  • 无公用底部
    实例如下:

html

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<title>点赞-我的钱包</title>
		<link href="css/mui.min.css" rel="stylesheet" />
		<link rel="stylesheet" href="css/index.css" />
		<style>
			#scrollSlider{
				/*height: 300px;*/
				overflow-y: scroll;
				position: relative;
			}

		</style>
	</head>

	<body>
		<header class="mui-bar mui-bar-nav">
			<a class="mui-icon mui-icon-left-nav mui-pull-left" onclick="javascript :history.back(-1);"></a>
			<h1 class="mui-title">我的钱包</h1>
		</header>
		<div class="mui-content mui-scroll-wrapper myWallet">

			<div class="top">
				<div class="content">

					<div class="money-con">
						<div class="t-money">
							<span class="num">2301.00</span>
							<span>可提现金额(元)</span>
						</div>
						<div class="j-money">
							<div class="left">
								<span class="num">100.00</span>
								<span>今日奖励(元)</span>
							</div>
							<div class="right">
								<span class="num">100.00</span>
								<span>总奖励(元)</span>
							</div>
						</div>
					</div>

					<div class="b-list">
						<a href="withdrawal.html">
							<div class="list">
								<span class="list-text">提现</span>
								<span class="mui-icon mui-icon-arrowright"></span>
							</div>
						</a>
						<a href="bind_bank.html">
							<div class="list">
								<span class="list-text">绑定银行卡</span>
								<span class="mui-icon mui-icon-arrowright"></span>
							</div>
						</a>
						<a href="bind_alipay.html">
							<div class="list">
								<span class="list-text">绑定支付宝</span>
								<span class="mui-icon mui-icon-arrowright"></span>
							</div>
						</a>
					</div>

					<div class="record-list" id="scrollSlider">
							<div id="sliderSegmentedControl" class="mui-slider-indicator mui-segmented-control mui-segmented-control-inverted">
								<a class="mui-control-item mui-active"><span>任务</span></a>
								<a class="mui-control-item"><span>提现记录</span></a>
								<a class="mui-control-item"><span>邀请奖金</span></a>
								<a class="mui-control-item"><span>任务分佣</span></a>
							</div>

							<div class="mui-slider-group">
								<div class="mui-slider-item mui-control-content mui-active" id="item1">
									<!--循环-->
									<!--<div class="list">
										<div class="left">
											<span>任务奖励</span>
										</div>
										<div class="right">
											<span class="red">+10</span>
											<span class="date">2019-01-02 10:23:09</span>
										</div>
									</div>-->

								</div>
								<div class="mui-slider-item mui-control-content">

									<div class="list">
										<div class="left">
											<span>提现</span>
										</div>
										<div class="right">
											<span class="red">-10</span>
											<span class="date">2019-03-02 10:23:09</span>
										</div>
									</div>

								</div>
								<div class="mui-slider-item mui-control-content">

									<div class="list">
										<div class="left">
											<span>邀请奖金</span>
										</div>
										<div class="right">
											<span class="red">+10</span>
											<span class="date">2019-03-02 10:23:09</span>
										</div>
									</div>

								</div>
								<div class="mui-slider-item mui-control-content">

									<div class="list">
										<div class="left">
											<span>任务奖励</span>
										</div>
										<div class="right">
											<span class="red">+10</span>
											<span class="date">2019-03-02 10:23:09</span>
										</div>
									</div>

								</div>
							</div>

						</div>
					</div>

				</div>

	

		</div>
		<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
		<!--<script type="text/javascript" src="js/mui.min.js"></script>-->
		<script>
			$("#sliderSegmentedControl").on("click","a",function(){
		        $(this).addClass("mui-active").siblings().removeClass("mui-active");
		        var index = $(this).index();//点击li时,保存当前li的下标index,
		        $(".mui-slider-group .mui-slider-item").eq(index).addClass("mui-active").siblings().removeClass("mui-active");
		  	}) 
		   
			var windowHeight = $(this).height();
			var scrollHeight = windowHeight-($(".money-con").outerHeight()+$(".b-list").outerHeight())-70;  //固定滚动区域的高
			var top = windowHeight-($(".money-con").outerHeight()+$(".b-list").outerHeight());
			$("#scrollSlider").css("height",scrollHeight);
			$("#sliderSegmentedControl").css("top",top);
			
			var page = 1, //分页码
				off_on = false; //分页开关(滚动加载方法 1 中用的)
				//加载数据
				var LoadingDataFn = function() {
					var dom = '';
					for(var i = 0; i < 10; i++) {
						dom += '<div class="list">';
						dom += '<div class="left">';
						dom += '<span>邀请奖金</span>';
						dom += '</div>';
						dom += '<div class="right">';
						dom += '<span class="red">+10</span>';
						dom += '<span class="date">2019-03-02 10:23:09</span>';
						dom += '</div>';
						dom += '</div>';
					}
					$('#item1').append(dom);
					off_on = true; //[重要]这是使用了 {滚动加载方法1}  时 用到的 !!![如果用  滚动加载方法1 时:off_on 在这里不设 true的话, 下次就没法加载了哦!]
				};
			//初始化, 第一次加载
			$(document).ready(function() {
				LoadingDataFn();
			});
			//滚动加载方法1
			$('#scrollSlider').scroll(function(){
				$(".money-con").css("display","none");
				$(".b-list").css("display","none");
				$("#scrollSlider").css("height",windowHeight-60);
				console.log($(this)[0].scrollTop+"++++++"+$(this).height());
				//当时滚动条离底部60px时开始加载下一页的内容
				if(($(this)[0].scrollTop + $(this).height() + 60) >= $(this)[0].scrollHeight) {
					//这里用 [ off_on ] 来控制是否加载 (这样就解决了 当上页的条件满足时,一下子加载多次的问题啦)
					if(off_on) {
						off_on = false;
						page++;
						console.log("第" + page + "页");
						LoadingDataFn(); //调用执行上面的加载方法
					}
				}
				var scrollTop = $(this).scrollTop();//返回或设置匹配元素的滚动条的垂直位置
				console.log("滚动条垂直的位置"+scrollTop);
				if(scrollTop==0){
					$(".money-con").css("display","block");
					$(".b-list").css("display","block");
					$("#scrollSlider").css("height",scrollHeight);
				}
			});
			

		</script>
	</body>

</html>

css

/*我的钱包*/
.myWallet{
	width: 100%;
	background-color: #f4f4f4;
}
.myWallet .top{
	position: fixed;
	width: 100%;
	height: 20px;
	background-color: #945fe3;
}
.myWallet .top  .content{
	width: 100%;
	position: absolute;
	top: 0;
	overflow: hidden;
}
.myWallet .top .content .money-con,.myWallet .top .content .b-list,.myWallet .top .content .record-list{
	width: 94%;
	margin: 0% 3% 2%;
	background-color: #fff;
	border-radius: 5px;
}
.myWallet .top .content .money-con .t-money{
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	border-bottom: 1px solid #f4f4f4;
	box-sizing: border-box;
}
.myWallet .top .content .money-con .t-money span,.myWallet .top .content .money-con .j-money .left span,.myWallet .top .content .money-con .j-money .right span{
	display: block;
	color: #a4a4a4;
	font-size: 1.2rem;
}
.myWallet .top .content .money-con .t-money span{
	line-height: 30px;
}
.myWallet .top .content .money-con .t-money span.num{
	color: #130b18;
	font-size: 2rem;
	line-height: 30px;
	padding-top: 5%;
}
.myWallet .top .content .money-con .j-money{
	width: 100%;
	display: flex;
	flex-direction: row;
}
.myWallet .top .content .money-con .j-money .left,.myWallet .top .content .money-con .j-money .right{
	width: 50%;
	text-align: center;
	margin: 2% 0%;
}
.myWallet .top .content .money-con .j-money .left {
	border-right: 1px solid #f4f4f4;
	box-sizing: border-box;
}

.myWallet .top .content .money-con .j-money .left span.num,.myWallet .top .content .money-con .j-money .right span.num{
	color: #130b18;
    font-size: 1.8rem;
    line-height: 30px;
}
.myWallet .top .content .b-list .list {
    width: 100%;
    height: 50px;
    line-height: 48px;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    color: #130b18;
    font-size: 1.5rem;
    border-bottom: 1px solid #f4f4f4;
    box-sizing: border-box;
    padding: 0 4%;
}
.myWallet .top .content .b-list span {
    display: inline-block;
    height: 4.5rem;
    line-height: 4.4rem;
}
.myWallet .record-list .mui-segmented-control.mui-segmented-control-inverted .mui-control-item.mui-active span{
	color: #e7910a;
}
.mui-segmented-control.mui-segmented-control-inverted .mui-control-item.mui-active{
	border: none;
}
.myWallet .record-list .mui-slider-indicator.mui-segmented-control{
	width: 94.3%;
	border-bottom: 1px solid #f4f4f4;
	box-sizing: border-box;
	background-color: #fff;
	position: fixed;
	z-index: 1;
}
.myWallet .record-list .mui-segmented-control .mui-control-item:first-child{
	width: 17.8%;
}
.myWallet .record-list .mui-segmented-control .mui-control-item{
	display: inline-block;
	width: 26.8%;
	padding-top: 2%;
}
.myWallet .record-list .mui-slider-group{
	height: auto;
	margin-top: 50px;
}
.myWallet .record-list .mui-slider-group .mui-slider-item .list {
    width: 100%;
    padding: 2% 5%;
    border-bottom: 1px solid #fafafa;
    box-sizing: border-box;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    font-size: 1.6rem;
}
.myWallet .record-list .mui-slider-group .mui-slider-item .list:last-child{
	margin-bottom: 20px;
}
.myWallet .record-list .mui-slider-group .mui-slider-item .list .left {
    color: #7d7d7d;
    font-size: 1.4rem;
}
.myWallet .record-list .mui-slider-group .mui-slider-item .list .right {
    font-size: 1.4rem;
    color: #282828;
}
.myWallet .record-list .mui-slider-group .mui-slider-item .list .right span {
    display: block;
    color: #e30a0a;
    font-size: 1.5rem;
    line-height: 1.8rem;
    text-align: right;
}
.myWallet .record-list .mui-slider-group .mui-slider-item .list .right span.date {
    font-size: 1.2rem;
    color: #a5a5a5;
}

猜你喜欢

转载自blog.csdn.net/weixin_42301962/article/details/102465072