js 实现无限加载分页(适合移动端)
Posted mracalele
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 实现无限加载分页(适合移动端)相关的知识,希望对你有一定的参考价值。
一、原理:当滚动条到达底部时,执行下一页内容。
判断条件需要理解三个概念:
1.scrollHeight 真实内容的高度
2.clientHeight 视窗的高度,即在浏览器中所能看到的内容的高度
3.scrollTop 视窗上面隐藏掉的部分,即滚动条滚动的距离
思路:
1.使用fixed定位加载框
2.使用$(window).scroll();方法来触发是否加载
3.通过 真实内容高度 - 视窗高度 - 上面隐藏部分 < 5 ,作为加载触发的条件
JavaScript代码:第一种方式
<script type="text/javascript"> var page=2; //当前页的页码 var allpage; //总页码,会从后台获取 var catid="{$catid}"; function showAjax(page){ $.ajax({ url:"", type:"post", data:{page:page,catid:catid}, success:function(data){ //要执行的内容 showContent(data); } }) } function scrollFn(){ //真实内容的高度 var pageHeight = Math.max(document.body.scrollHeight,document.body.offsetHeight); //视窗的高度 var viewportHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0; //隐藏的高度 var scrollHeight = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; if(pageHeight - viewportHeight - scrollHeight < 50){//如果满足触发条件,执行 showAjax(page); } } function showContent(data){ var list=eval(\'(\'+data+\')\'); var ss=\'\'; for (var i in list) { ss=ss+\'<li><a href="\'+list[i][\'url\']+\'">\'+list[i][\'title\']+\'</a></li>\'; } $(".minsuList").append(ss); page++; //页数加1 } $(window).bind("scroll",scrollFn);//绑定滚动事件 </script>
<script> var catid="6"; var url="/index.php?m=content&c=index&a=ajax_content"; var p=2; $(window).bind("scroll",function(){ var winHeight = window.innerHeight ? window.innerHeight : $(window).height(); // iphone fix var closeToBottom = $(window).scrollTop() + winHeight > $(document).height() - 50; if(parseInt($("#pages a:nth-last-child(2)").text())<p){ $(".page_loading").html(\'已经最底部了...\'); return false; }; if(closeToBottom){ ajax_content(); } }); function ajax_content(){ $.post(url,{catid:catid,p:p},function(res){ tplshow(res); },"json"); p++; } function tplshow(res){ var datas=res.lists; var appendli=""; for(var i=0;i<datas.length;i++){ var data=datas[i]; if(data.title!=""){ appendli+=\'<li>\'+data.title+\'</li>\' } } var $appendli=$(appendli); $(".modlenews").append($appendli); } function timeConver(time){ var time= new Date(parseInt(time)); var hour = time.getHours(); var minute = time.getMinutes(); return [hour,minute].join(\':\'); } </script>
二、
$(window).scroll(function () {
//已经滚动到上面的页面高度
var scrollTop = $(this).scrollTop();
//页面高度
var scrollHeight = $(document).height();
//浏览器窗口高度
var windowHeight = $(this).height();
//此处是滚动条到底部时候触发的事件,在这里写要加载的数据,或者是拉动滚动条的操作
if (scrollTop + windowHeight == scrollHeight) {
dragThis.insertDom();
}
});
三、js插件
移动端下拉刷新、上拉加载更多插件dropload
以上是关于js 实现无限加载分页(适合移动端)的主要内容,如果未能解决你的问题,请参考以下文章
基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多