js判断溢出层是否到底部的ajax新闻无限加载类组件写法

改进版增加可以再重定义模板功能

如果携带template参数,则需要定义一个template的函数方法,然后把ajax获取到的内容再函数里面执行输出!


写一个js判断溢出层是否到底部的ajax新闻无限加载类组件写法

首先是判断是否到达层底部,这里有个问题就是层要固定高度,其次初始第一次加载的内容的高度一定要大于这个高度,不然滚不了!

代码如下

var  loadingMore = false;//增加判断是否直接加载
var  page=1;
$('.no-loadings').hide();//隐藏到底部显示的层
listajax(1,'news',3,4,'',template);//执行初始的第一次加载
$(".list-jz").scroll(function(e){
    var h = $(this).height();//div可视区域的高度
    var sh = $(this)[0].scrollHeight;//滚动的高度,$(this)指代jQuery对象,而$(this)[0]指代的是dom节点
    var st =$(this)[0].scrollTop;//滚动条的高度,即滚动条的当前位置到div顶部的距离
    if(h+st>=sh && !loadingMore){
    //上面的代码是判断滚动条滑到底部的代码
      //alert("滑到底部了");
      loadMore();//滚动条滑到底部时,只要继续滚动滚动条,就会触发这条代码.一直滑动滚动条,就一直执行这条代码。
    }
  })


然后就是loadMore的部分

function template(e,dom){
$.each(e,function(i,obj){ 
            var list="1";
                 console.log(list)
            list+="<li c><a href="+obj['arcurl']+">";
            list+="<div class='img'><img src="+obj['cfg_basehost']+obj['litpic']+"></div>"
            list+="<div class='txt'>";
            list+="<h3>"+obj['title']+"<span></span></h3>";
            list+="</div></a></li>"
            dom.append(list); 
         });
           
}
function loadMore() {
        if (loadingMore) return;
        loadingMore = true;
        page++;
        console.log(page);
        setTimeout(//增加延迟,防止一直不间断滚动
            () => {
                this.listajax(page,'news',3,4, () => {  
                  loadingMore = false;
                },template)
            }, 333
        )
    }

最后是类似组件调用加载的部分

//page是页码 ,id是栏目id pagesize是每页个数  cb是是否执行 dom是需要操作的id /template是需要替换的模板
function listajax(page,dom,id,pagesize,cb,template){
  var tid=id || 3;//获取id
  var page=page || 1;//获取页码
  var pagesize=pagesize || 4;//获取每页个数
  var dom=$("#"+dom) || $("#news");//获取dom
  $.ajax({
    url: 'https://www.csgt120.com/plus/list_ajax.php',
    type: 'GET',
    dataType: 'json',
    data: {
      ajax:'ss',
      typeid:tid,
      page:page,
      pagesize:pagesize
    },
    success:function(e){
        if(e.data){
        if(template){//判断是否有模板导入,如果没有则执行默认的模板方式
          console.log(e.data);
             template(e.data,dom);
          }else{
         $.each(e.data,function(i,obj){ 
            var list="";
            list+="<li "+i+"><a href="+obj['arcurl']+">";
            list+="<div class='img'><img src="+obj['cfg_basehost']+obj['litpic']+"></div>"
            list+="<div class='txt'>";
            list+="<h3>"+obj['title']+"<span></span></h3>";
            list+="</div></a></li>"
            dom.append(list); 
         });
         }
       }else{
        $('.my-loading').hide();
        $('.no-loadings').show();
       }
        if (cb!='') {
               cb()
              }
    }
  })
  .fail(function() {
    console.log("error");
  })

}



相关内容

发表评论

验证码:
点击我更换图片

最新评论