mui上拉加载功能实例详解


Posted in Javascript onApril 13, 2017

最近在做移动端的项目,用到了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上拉加载功能实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS中类或对象的定义说明
Mar 10 Javascript
jQuery实现的输入框选择时间插件用法实例
Feb 28 Javascript
jquery判断当前浏览器的实现代码
Nov 07 Javascript
javascript点击按钮实现隐藏显示切换效果
Feb 03 Javascript
基于原生JS实现图片裁剪
Aug 01 Javascript
微信小程序 icon组件详细及实例代码
Oct 25 Javascript
Node.js用readline模块实现输入输出
Dec 16 Javascript
js实现键盘自动打字效果
Dec 23 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
Sep 21 jQuery
Vue 中mixin 的用法详解
Apr 23 Javascript
微信小程序实现滑动翻页效果(完整代码)
Dec 06 Javascript
JS class语法糖的深入剖析
Jul 07 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
Apr 13 #Javascript
JS开发中百度地图+城市联动实现实时触发查询地址功能
Apr 13 #Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
Apr 13 #Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
Apr 13 #Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
Apr 13 #Javascript
JavaScript数据结构之二叉树的计数算法示例
Apr 13 #Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 #Javascript
You might like
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
php include,include_once,require,require_once
2008/09/05 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
js控制iframe的高度/宽度让其自适应内容
2014/04/09 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
python 3.7.0 下pillow安装方法
2018/08/27 Python
Python3获取拉勾网招聘信息的方法实例
2019/04/03 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
Django通过json格式收集主机信息
2020/05/29 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
python如何建立全零数组
2020/07/19 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
python实现视频压缩功能
2020/12/18 Python
香港化妆品经销商:我的公主
2016/08/05 全球购物
安全大检查实施方案
2014/02/22 职场文书
2014小学植树节活动总结
2014/03/10 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
合作合同协议书范本
2015/01/27 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
安全学习心得体会范文
2016/01/18 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
Pytest中conftest.py的用法
2021/06/27 Python