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插件

浙公网安备 33010602011771号