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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM