mui上拉加載功能實(shí)例詳解
最近在做移動(dòng)端的項(xiàng)目,用到了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、靜態(tài)頁(yè)的dom結(jié)構(gòu)
<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、靜態(tài)頁(yè)面 js對(duì)應(yīng)的代碼
<script type="text/javascript">
(function(){
//上拉加載下拉刷新
mui.init({
pullRefresh: {
container: '#pullrefresh',
up: {
contentrefresh: '正在加載...',
callback: pullupRefresh
}
}
});
//加載更多
var dataNum=12;//獲取數(shù)據(jù)總數(shù)
var pageSize=3;//每頁(yè)顯示條數(shù)
var counter=1;//計(jì)數(shù)器
var pageStart=0;//開始數(shù)據(jù)條數(shù)
getData(pageStart,pageSize);
function getData(pageStart,pageSize){
//顯示數(shù)不足每頁(yè)顯示條數(shù)
if(dataNum-pageStart<pageSize){
pageSize=dataNum-pageStart;
data(pageStart,pageSize);
console.log("顯示數(shù)不足每頁(yè)顯示條數(shù)");
}
//顯示隱藏加載更多
else if(pageStart+pageSize>=dataNum){
data(pageStart,pageSize);
console.log("沒(méi)有更多數(shù)據(jù)了");
//沒(méi)有更多數(shù)據(jù)了
}else{
data(pageStart,pageSize);
console.log("顯示dataNum"+dataNum+"pageSize"+pageSize+"pageStart"+pageStart);
//顯示
}
}
function data(pageStart,pageSize){
//業(yè)務(wù)
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">價(jià)格:10元</span>'+
'<span class="icon-golden"></span>'+
'<span class="goods-golden">送1111</span>'+
'</div>'+
'<div class="buycon">'+
'<a class="buybtn buybtnabled" onclick="shop(5)">立即購(gòu)買</a>'+
'</div>'+
'</div>'
}
console.log(jQuery);
jQuery(result).insertBefore('#pullrefresh .mui-scroll .mui-table-view');
}
/**
* 上拉加載具體業(yè)務(wù)實(shí)現(xiàn)
*/
function pullupRefresh() {
setTimeout(function() {
var flag=counter++<(dataNum/pageSize)
console.log(dataNum/pageSize);
mui('#pullrefresh').pullRefresh().endPullupToRefresh((!flag)); //參數(shù)為true代表沒(méi)有更多數(shù)據(jù)了。
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、與服務(wù)端聯(lián)調(diào)時(shí) js做了改動(dòng),如下:
//加載更多
var pageSize = 15;//每頁(yè)顯示條數(shù)
var counter = 1;//計(jì)數(shù)器
var pageStart = 0;//開始數(shù)據(jù)條數(shù)
var Flag=true;
data();
function data() {
//業(yè)務(wù)
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=='';
//判斷是否有返回值 當(dāng)沒(méi)有返回值的時(shí)候就為空,則代表沒(méi)有更多數(shù)據(jù)了
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">價(jià)格:<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+')">立即購(gòu)買</a>' +
'</div>' +
'</div>'
});
jQuery(result).insertBefore('#pullrefresh .mui-scroll .mui-table-view');
}
}
);
}
/**
* 上拉加載具體業(yè)務(wù)實(shí)現(xiàn)
*/
function pullupRefresh() {
setTimeout(function () {
mui('#pullrefresh').pullRefresh().endPullupToRefresh((Flag)); //參數(shù)為true代表沒(méi)有更多數(shù)據(jù)了。
data();
}, 1500);
}
})();
5、踩的坑
注意:一定要先引入jquery、mui.js否則 js代碼會(huì)不識(shí)別mui。
在jquery中,如果要給動(dòng)態(tài)生成的節(jié)點(diǎn)綁定事件,以前要用live,現(xiàn)在用delegate或者on,原理是利用冒泡實(shí)現(xiàn)事件委托,也就是給生成節(jié)點(diǎn)的父節(jié)點(diǎn)預(yù)先綁定事件。
以上所述是小編給大家介紹的mui上拉加載功能實(shí)例詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
動(dòng)態(tài)創(chuàng)建script在IE中緩存js文件時(shí)導(dǎo)致編碼的解決方法
這篇文章主要介紹了動(dòng)態(tài)創(chuàng)建script在IE中緩存js文件時(shí)導(dǎo)致編碼的解決方法,需要的朋友可以參考下2014-05-05
JS?new操作原理及手寫函數(shù)模擬實(shí)現(xiàn)示例
這篇文章主要為大家介紹了JS?new操作原理及手寫函數(shù)模擬實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
原生JS實(shí)現(xiàn)點(diǎn)擊數(shù)字小游戲
這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)點(diǎn)擊數(shù)字小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
深入理解JavaScript是如何實(shí)現(xiàn)繼承的
這篇文章主要介紹了JavaScript是如何實(shí)現(xiàn)繼承的,有需要的朋友可以參考一下2013-12-12
JavaScript更改原始對(duì)象valueOf的方法
這篇文章主要介紹了JavaScript更改原始對(duì)象valueOf的方法,涉及javascript使用自定義valueOf函數(shù)替換掉原始o(jì)bject中valueOf的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
uniapp實(shí)現(xiàn)可以左右滑動(dòng)導(dǎo)航欄
這篇文章主要為大家詳細(xì)介紹了uniapp 實(shí)現(xiàn)可以左右滑動(dòng)導(dǎo)航欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10
fileupload控件 文件類型客戶端驗(yàn)證實(shí)現(xiàn)代碼
客戶端JS驗(yàn)證fileupload控件,設(shè)置只允許特定的文件類型 ,當(dāng)然服務(wù)器端更要判斷啊。這里是為了后臺(tái)驗(yàn)證的更順利。2009-11-11
第二次聊一聊JS require.js模塊化工具的基礎(chǔ)知識(shí)
第二次聊一聊JS require.js模塊化工具的基礎(chǔ)知識(shí),本文為大家JS require.js模塊化工具的最基本知識(shí)點(diǎn),感興趣的小伙伴們可以參考一下2016-04-04

