启尚博客

世上最牢固的感情不是"我爱你",而是"我习惯了有你"。彼此依赖,才是最深的相爱。

2020-01-10

技术-原创>

jq滚动加载后台数据

实现简单的滚动加载,动态最加到当前页面。

要使用这个代码需要引入jq库,例如jquery-1.8.3.min.js。

style部分

<style>
        .content {
            width: 500px;
            border: 1px solid #0e87e3;
            margin-top: 100px;
        }

        .content ul li {
            list-style: none;
            width: 130px;
            display: inline-block;
            margin: 4px;
        }

        .content li img {
            width: 130px;
        }
    </style>

html部分

<div class="content">
    <ul id="refreshContainer">
        <!-- 默认第一页已加载的部分 -->
        <li><img src="./images/img_ (1).jpg"><span>1</span></li>
        <li><img src="./images/img_ (2).jpg"><span>2</span></li>
        <li><img src="./images/img_ (3).jpg"><span>3</span></li>
    </ul>
</div>
<input type="text" id="nowPage" value="0" placeholder=""/>

<div class="load-tip-div">
    <span class="load-tip">滚动加载</span>
</div>

js部分

<script type="text/javascript">

    $(document).ready(function () {
        var loading = true;

        //获取追加的内容
        function getcontent() {
            var pageId = jQuery("#nowPage");
            pageId.val(parseInt(pageId.val()) + 1);
            var page = pageId.val();
            //console.log(page);
            if (parseInt(page) <= 10) { // 10后台数据总页数, 这里暂时写死,可以后台获取放到hidden input
                jQuery.ajax({
                    url: 'test.php?page=' + page,
                    type: "get",
                    async: false,
                    beforeSend: function () {
                        loading = false;
                    },
                    success: function (s) {
                        console.log(s);
                        jQuery('#refreshContainer').append(s);
                        $(".load-tip-div").css({"display": "none"});
                    },
                    complete: function () {
                        loading = true;
                    }
                })
            } else {
                $(".load-tip").html("加载完毕");
                $(".load-tip-div").css({"display": ""});
            }
        }

        //滚动到底部的判断
        $(window).scroll(function () {console.log("----",$(document).scrollTop() , $(window).height() , $(document).height());
        var wl = $(document).scrollTop();
            if(wl%20===0 && wl + $(window).height() > $(document).height() - 20){
                if(loading){
                    getcontent();
                }
            }
        });
    });
</script>

附加一个手动点击加载的js

<!--{if $page<$total_page}--><div class="add-content">More</div><!--{/if}-->
<script type="text/javascript">
var page = {$page};
var total_page = {$total_page};
var str_new = '';
jQuery('.add-content').click(function(){
	if(jQuery(this).hasClass('loading_data'))
	{
		return false;
	}
	jQuery(this).addClass('loading_data').text('Loading');
	page += 1;
	if(page <= total_page)
	{
		jQuery.ajax({
			type:'post',
			url: 'test.php?page=' + page,
			success:function(re){
				var re = eval('('+re+')');
				for(var i in re)
				{
				    str_new += ''; //组装html
				}
				jQuery(str_new).insertBefore('.add-content');

			},
			complete:function(){
				jQuery('.add-content').removeClass('loading_data').text('More');
				if(page >= total_page)
				{
					jQuery('.add-content').hide();
				}
			}
		});
	}
});
</script>

来一发吐槽