mui上拉加載功能實例詳解
最近在做移動端的項目,用到了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)頁的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)頁面 js對應(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;//每頁顯示條數(shù) var counter=1;//計數(shù)器 var pageStart=0;//開始數(shù)據(jù)條數(shù) getData(pageStart,pageSize); function getData(pageStart,pageSize){ //顯示數(shù)不足每頁顯示條數(shù) if(dataNum-pageStart<pageSize){ pageSize=dataNum-pageStart; data(pageStart,pageSize); console.log("顯示數(shù)不足每頁顯示條數(shù)"); } //顯示隱藏加載更多 else if(pageStart+pageSize>=dataNum){ data(pageStart,pageSize); console.log("沒有更多數(shù)據(jù)了"); //沒有更多數(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">價格: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'); } /** * 上拉加載具體業(yè)務(wù)實現(xiàn) */ function pullupRefresh() { setTimeout(function() { var flag=counter++<(dataNum/pageSize) console.log(dataNum/pageSize); mui('#pullrefresh').pullRefresh().endPullupToRefresh((!flag)); //參數(shù)為true代表沒有更多數(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)時 js做了改動,如下:
//加載更多 var pageSize = 15;//每頁顯示條數(shù) var counter = 1;//計數(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==''; //判斷是否有返回值 當沒有返回值的時候就為空,則代表沒有更多數(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">價格:<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'); } } ); } /** * 上拉加載具體業(yè)務(wù)實現(xiàn) */ function pullupRefresh() { setTimeout(function () { mui('#pullrefresh').pullRefresh().endPullupToRefresh((Flag)); //參數(shù)為true代表沒有更多數(shù)據(jù)了。 data(); }, 1500); } })();
5、踩的坑
注意:一定要先引入jquery、mui.js否則 js代碼會不識別mui。
在jquery中,如果要給動態(tài)生成的節(jié)點綁定事件,以前要用live,現(xiàn)在用delegate或者on,原理是利用冒泡實現(xiàn)事件委托,也就是給生成節(jié)點的父節(jié)點預(yù)先綁定事件。
以上所述是小編給大家介紹的mui上拉加載功能實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
JavaScript在for循環(huán)中綁定事件解決事件參數(shù)不同的情況
響應(yīng)一堆相似的事件,但是每個事件的參數(shù)都不同,在這種情況下就可以使用JavaScript 在for循環(huán)中綁定事件,下面有個不錯的示例,大家可以參考下2014-01-01使用watch在微信小程序中實現(xiàn)全局狀態(tài)共享
這篇文章主要給大家介紹了關(guān)于如何使用watch在小程序中實現(xiàn)全局狀態(tài)共享的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用微信小程序具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06JavaScript學(xué)習(xí)總結(jié)(一) ECMAScript、BOM、DOM(核心、瀏覽器對象模型與文檔對象模型)
JavaScript是一種解釋執(zhí)行的腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,內(nèi)置支持類型,它遵循ECMAScript標準。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,主要用來給HTML增加動態(tài)功能2018-01-01js獲取input長度并根據(jù)頁面寬度設(shè)置其大小及居中對齊
這篇文章主要介紹了js獲取input長度并根據(jù)頁面寬度設(shè)置其大小及居中對齊的方法,需要的朋友可以參考下2014-08-08