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实现无限滚动加载更多

Vue.js 开发实践:实现精巧的无限加载与分页功能

Vue.js 开发实践:实现精巧的无限加载与分页功能

[DIV/CSS] Vue.js 开发实践:实现精巧的无限加载与分页功能

移动端无限加载教程

无限分页//////////////zz