js实现上拉加载更多

先贴代码:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>我的优惠券</title>
	<script src="themesmobile/mo_paleng_moban/js/one.js"></script>
	<link rel="stylesheet" href="themesmobile/mo_paleng_moban/css/commen.css">
	<link rel="stylesheet" href="themesmobile/mo_paleng_moban/css/myCoupon.css">
	<style>
		.loading {
    		margin-bottom: 40px;
    		background: #f2f2f2;
    		height: 25px;
    		overflow: hidden;
    		justify-content: center;
    		/*padding-bottom: 75px;*/
    		display: none;
    		text-align: center;
		}		
		.loading img{
			width: 15px;
			height: 15px;
		}
	</style>
</head>
<body>
	<header>
		<img src="themesmobile/mo_paleng_moban/images/couponImg/back.png" alt="">
		历史记录
		<a href="user_coupon.php?act=myCoupon" class="toOther">我的卡券</a>
	</header>
	<div class="tip"></div>
	<ul>
		<!-- <li class="clearfix" style="background: url('themesmobile/mo_paleng_moban/images/couponImg/taked.png') no-repeat center;">
				<div class="left">
					<h2>全品类抵扣券</h2>
					<p class="sum">
						¥<span style="font-size: 58px; margin-right: 15px;">30</span>
						<span style="font-size: 24px; color: #878787;">消费满100.00可用</span>
					</p>
				</div>
				<div class="right">
					
				</div>
			</li> -->
	</ul>

	<!--加载更多dom结构-->
	<div class="loading">
        <span>加载中...</span>
        <img src="http://www.youtasc.com/shops/resources/images_my/load.gif">
    </div>


	<script src="themesmobile/mo_paleng_moban/js/jquery.min.js"></script>
	<script>
		var page=1; //定义页数
		var onoff=true; //控制loading开关

		$(document).ready(function(){
			$('body').css('display','none');
			$('body').fadeIn(800);
		})
		$('header img').on('click',function(){
			history.go(-1);
		});
		
		//isFirst参数  
		//在调用该方法的时候要做一个判断 
		//如果是首次加载数据 在没有数据的情况下提示没有数据
		//如果是在上拉加载中获取数据  在没有数据的情况下提示“这是我的底线”
		function getDate(isFirst=0){ 
			$.ajax({
			url:'user_coupon.php?act=my_coupon_history',
			type:'post',
			dataType:'json',
			data:{
				"page":page
			},
			success:function(res){
				console.log(res);
				// 无数据
				if(res.status==201){
					if(isFirst==1){
						// 首次加载无数据
   						onoff=false;  //当没有数据的时候,加载状态要关闭
   						$('.loading').hide();
   						$('.tip').html('<p style="font-size:24px; color:#ccc; margin:200px auto; text-align:center;">您还没有历史记录</p>');
   					}else{
   						// 下拉加载无数据
   						onoff=false;  //当没有数据的时候,加载状态要关闭
   						$('.loading').html("<span>这是我的底线</span>");
   					}	
				}else{
					// 有数据
					$('.loading').html('<span>加载中...</span><img src="themesmobile/mo_paleng_moban/images/wdtj-jzgd_03.gif">');
					var str='';
					$.each(res.data.result,function(i,k){
						str+='<li class="clearfix" style="background: url('+ (k.status==2?"themesmobile/mo_paleng_moban/images/couponImg/used.png":"themesmobile/mo_paleng_moban/images/couponImg/overdue.png") +') no-repeat center;">';
						str+='<div class="left">';
						str+='<h2>'+k.coupon_name+'</h2>';
						str+='<p class="sum">¥<span style="font-size: 58px; margin-right: 15px;">'+k.amount+'</span><span style="font-size: 24px; color: #878787;"> '+k.end_time+'到期</span></p>';
						str+='</div></li>'
					})
					
					//有数据的时候要做判断
					//如果当前是第一页,则把容器中的内容即为请求数据
					//如果当前不是第一页,则容器内容为本次请求数据和之前请求数据的拼接,所以这里用appendTo追加
					if(page==1){
	 					$('ul').html(str);
	 				}else{
	 					$(str).appendTo($('ul')); 				
	 				}
					onoff=true;	//当有数据的时候,上拉加载更多的状态为true
				}
				
			}
		});
		}
		
		//当页面加载的时候要请求数据,此时为第一次请求,请求参数为1
		getDate(1);
		
		//上拉加载更多
		$(document).scroll(function() {
         	if($(window).height()+$(document).scrollTop()>=$(document.body).height()){
             	$(".loading").show()
            	if (onoff) {
                	onoff=false
                	setTimeout(function(){
                    	page++
                   		getDate(); //上拉加载更多请求数据,不是第一次请求数据,不需要传参,采用默认参数
               		},500)
            	}
         	}
     	})

	</script>
</body>
</html>

onoff相当于一个开关锁。
当onoff=false的时候,即没有数据的时候,关锁,禁止上拉加载更多。
当onoff=true的时候,即 有数据的时候,开锁,允许上拉加载更多。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值