欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mui上拉加载功能实例详解

程序员文章站 2022-04-29 16:29:30
最近在做移动端的项目,用到了mui的上拉加载,整理如下: 1、需要引入的css、js

最近在做移动端的项目,用到了mui的上拉加载,整理如下:

1、需要引入的css、js

<link rel="stylesheet" href="common/mui/css/mui.min.css" rel="external nofollow" >
<script src="js/jquery-3.2.0.min.js"></script>
<script src="common/mui/js/mui.min.js"></script>

2、静态页的dom结构

<div id="pullrefresh" class="mui-content mui-scroll-wrapper" class="maincon">
<div class="mui-scroll">
<div class="mui-table-view mui-table-view-chevron">
</div>
</div>
</div>

3、静态页面 js对应的代码

<script type="text/javascript">
(function(){
//上拉加载下拉刷新
mui.init({
  pullrefresh: {
  container: '#pullrefresh',
  up: {
    contentrefresh: '正在加载...',
    callback: pulluprefresh
    }
  }
});
//加载更多
var datanum=12;//获取数据总数
var pagesize=3;//每页显示条数
var counter=1;//计数器
var pagestart=0;//开始数据条数
getdata(pagestart,pagesize);
function getdata(pagestart,pagesize){
//显示数不足每页显示条数
if(datanum-pagestart<pagesize){
pagesize=datanum-pagestart;
data(pagestart,pagesize);
console.log("显示数不足每页显示条数");
}
//显示隐藏加载更多
else if(pagestart+pagesize>=datanum){
data(pagestart,pagesize);
console.log("没有更多数据了");
//没有更多数据了
}else{
data(pagestart,pagesize);
console.log("显示datanum"+datanum+"pagesize"+pagesize+"pagestart"+pagestart);
//显示
}
}
function data(pagestart,pagesize){
//业务
var result="";
for(var i=pagestart;i<(pagestart+pagesize);i++){
result+='<div class="goode-msg">'+
'<div class="goods">'+
'<p class="goode-name">呜呜呜呜</p>'+
'<span class="goods-price">价格:10元</span>'+
'<span class="icon-golden"></span>'+
'<span class="goods-golden">送1111</span>'+
'</div>'+
'<div class="buycon">'+
'<a class="buybtn buybtnabled" onclick="shop(5)">立即购买</a>'+
'</div>'+
'</div>'
}
console.log(jquery);
jquery(result).insertbefore('#pullrefresh .mui-scroll .mui-table-view');
}
/**
* 上拉加载具体业务实现
*/
function pulluprefresh() {
settimeout(function() {
var flag=counter++<(datanum/pagesize)
console.log(datanum/pagesize);
mui('#pullrefresh').pullrefresh().endpulluptorefresh((!flag)); //参数为true代表没有更多数据了。
var scroll = document.body.queryselector('.mui-scroll .mui-table-view');
var item = document.body.queryselectorall('.goode-msg');
console.log(counter);
if(flag){
console.log(counter);
pagestart=counter*pagesize;
data(pagestart,pagesize);
}
}, 1500);
}
})();
</script>

4、与服务端联调时 js做了改动,如下:

 //加载更多
 var pagesize = 15;//每页显示条数
 var counter = 1;//计数器
 var pagestart = 0;//开始数据条数
 var flag=true;
 data();
 function data() {
  //业务
  var result = "";
  $.ajax({
   type: 'post',
   url: '/xxx/xxx',
   async: false,
   datatype: "json",
   data: {page: counter},
   success: function (data) {
    flag=data[0].dd==null||data[0].dd==undefined||data[0].dd=='';
//判断是否有返回值 当没有返回值的时候就为空,则代表没有更多数据了
    console.log(flag);
    if(flag==false){
     counter++;
    }
    $.each(data[0].dd, function (i, value) {
     result += '<div class="goode-msg">' +
       '<div class="goods">' +
       '<input type="hidden" class="id" value="'+value.id+'">' +
       '<input type="hidden" class="aa" value="'+value.aa+'">' +
       '<p class="goode-name" id="title'+value.id+'">'+value.title+'</p>' +
       '<input type="hidden" class="goods-price-cent" value="'+value.price.cent/100+'">' +
       '<span class="goods-price">价格:<b id="price'+value.id+'">'+value.price.cent/100+'</b>元</span>' +
       '<span class="icon-golden"></span>' +
       '<span class="goods-golden">送<b id="ss'+value.id+'">'+value.ss+'</b>ss</span>' +
       '</div>' +
       '<div class="buycon">' +
       '<a class="buybtn buybtnabled" onclick="shop('+i+')">立即购买</a>' +
       '</div>' +
       '</div>'
    });
    jquery(result).insertbefore('#pullrefresh .mui-scroll .mui-table-view');
   }
  }
 );
}
/**
 * 上拉加载具体业务实现
 */
function pulluprefresh() {
 settimeout(function () {
  mui('#pullrefresh').pullrefresh().endpulluptorefresh((flag)); //参数为true代表没有更多数据了。
  data();
 }, 1500);
}
})();

5、踩的坑

注意:一定要先引入jquery、mui.js否则 js代码会不识别mui。

在jquery中,如果要给动态生成的节点绑定事件,以前要用live,现在用delegate或者on,原理是利用冒泡实现事件委托,也就是给生成节点的父节点预先绑定事件。

以上所述是小编给大家介绍的mui上拉加载功能实例详解,希望对大家有所帮助