利用pullrefresh_with_tab.html 来做的页面
首先通过Ajax获取到数据,然后js创建动态的div,然后左右可以滑动,却无法向下滑动,报错是:
Uncaught TypeError: Cannot read property '0' of undefined mui.js:3787
网上找了方法,在#3787#那边加了个判断, 报错是不报错了,但还是不能上下滑动,就很尴尬了。
ajax获取数据和动态添加div的部分
报错部分
怎么解决呢?
Ricky_Cslg (作者) - 刚入门的程序员~~
贴一下源代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>商品分类</title>
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="stylesheet" href="__PUBLIC__/css/mui.min.css">
<link rel="stylesheet" href="__PUBLIC__/css/home.css">
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/icons-extra.css" />
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/app.css" />
<style>
html,
body {
background-color: #efeff4;
}
.mui-control-item:focus {color: #2a6496;text-decoration: underline;}
.mui-bar~.mui-content .mui-fullscreen {
top: 44px;
height: auto;
}
.mui-pull-top-tips {
position: absolute;
top: -20px;
left: 50%;
margin-left: -25px;
width: 40px;
height: 40px;
border-radius: 100%;
z-index: 1;
}
.mui-bar~.mui-pull-top-tips {
top: 24px;
}
.mui-pull-top-wrapper {
width: 42px;
height: 42px;
display: block;
text-align: center;
background-color: #efeff4;
border: 1px solid #ddd;
border-radius: 25px;
background-clip: padding-box;
box-shadow: 0 4px 10px #bbb;
overflow: hidden;
}
.mui-pull-top-tips.mui-transitioning {
-webkit-transition-duration: 200ms;
transition-duration: 200ms;
}
.mui-pull-top-tips .mui-pull-loading {
/*-webkit-backface-visibility: hidden;
-webkit-transition-duration: 400ms;
transition-duration: 400ms;*/
margin: 0;
}
.mui-pull-top-wrapper .mui-icon,
.mui-pull-top-wrapper .mui-spinner {
margin-top: 7px;
}
.mui-pull-top-wrapper .mui-icon.mui-reverse {
/*-webkit-transform: rotate(180deg) translateZ(0);*/
}
.mui-pull-bottom-tips {
text-align: center;
background-color: #efeff4;
font-size: 15px;
line-height: 40px;
color: #777;
}
.mui-pull-top-canvas {
overflow: hidden;
background-color: #fafafa;
border-radius: 40px;
box-shadow: 0 4px 10px #bbb;
width: 40px;
height: 40px;
margin: 0 auto;
}
.mui-pull-top-canvas canvas {
width: 40px;
}
.mui-slider-indicator.mui-segmented-control {
background-color: #efeff4;
}
</style>
</head>
<body>
<header class="mui-bar mui-bar-nav aui-header b-line">
<a class=" mui-icon mui-icon-search mui-pull-left" href="search.html"></a>
<h1 class="mui-title">海淘购</h1>
<a class=" mui-icon mui-icon-chatbubble mui-pull-right" href="dope.html"></a>
</header>
<div class="mui-content">
<div id="slider" class="mui-slider mui-fullscreen mui-slider-loop">
<div id="sliderSegmentedControl" class="mui-scroll-wrapper mui-slider-indicator mui-segmented-control mui-segmented-control-inverted">
<div id="category" class="mui-scroll">
</div>
<div style="margin-top: 40px;width: 100%;height: 40px;background-color: #FFF;margin-bottom: 0px;">
<select style="float: left; width: 30%;margin-bottom: 0px;height: 40px;">
<option value="volvo">综合排序</option>
<option value="saab">信用</option>
<option value="opel">价格由高到低</option>
<option value="audi">价格由低到高</option>
</select>
<span style="float: left;width: 40%;line-height: 40px;height: 40px;">销量优先</span>
<span class="mui-icon-extra mui-icon-extra-class" style="line-height: 40px;"></span>
</div>
</div>
<div class="mui-slider-group" style="margin-top: 50px;" id="itembox">
<div id="item1mobile" class="mui-slider-item mui-control-content mui-active">
<div id="scroll1" class="mui-scroll-wrapper">
<div class="mui-scroll">
<ul class="mui-table-view mui-grid-view" id="commodity">
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<include file="Public/footer" />
<script src="__PUBLIC__/js/jquery-2.1.4.min.js" ></script>
<script src="__PUBLIC__/js/mui.js"></script>
<script src="__PUBLIC__/js/mui.pullToRefresh.js"></script>
<script src="__PUBLIC__/js/mui.pullToRefresh.material.js"></script>
<script>
$(function (){
var params = {};
var url = 'http://32.40.134.105/gouwu/index.php/Home/Cate';
$.post(url, params, function(d){
$("#category").empty();
$("#category").append('<a class="mui-control-item mui-active" href="#item1mobile">全部</a>');
var j=2;
$.each(d.items_cate,function(i,val){
var listid ="item"+j+"mobile";
var html = '<a class="mui-control-item" href="#'+listid+'">' + val.name + '</a>';
$("#category").append(html);
j++;
});
$.each(d.list, function(i,val) {
var html = '<li class="mui-table-view-cell mui-media mui-col-xs-6"><a href="'+val.item_url+'"><img class="mui-media-object" src="'+val.pic_url+'"><div class="mui-media-body">'+val.title+'</div><div class="goods_info"> <span class="price_info">¥'+val.coupon_price+'</span> <span class="fav_num" style="float: right;">淘宝</span></div></a></li>';
$("#commodity").append(html);
});
var k = 2;
$.each(d.items_cate,function(i,val){
var html = '<div id="item'+k+'mobile" class="mui-slider-item mui-control-content mui-active"><div id="scroll1" class="mui-scroll-wrapper" data-scroll = "3"><div class="mui-scroll"><ul class="mui-table-view mui-grid-view" id="'+k+'commodity"></ul></div></div></div>'
$("#itembox").append(html);
$.each(d.list, function(j,vbl) {
if(val.id == vbl.cate_id){
var html = '<li class="mui-table-view-cell mui-media mui-col-xs-6"><a href="'+vbl.item_url+'"><img class="mui-media-object" src="'+vbl.pic_url+'"><div class="mui-media-body">'+vbl.title+'</div><div class="goods_info"> <span class="price_info">¥'+vbl.coupon_price+'</span> <span class="fav_num" style="float: right;">淘宝</span></div></a></li>';
var copyid = k+"commodity";
$("#"+ copyid+ "").append(html);
}
});
k++;
});
}, 'json');
mui.init();
(function($) {
//阻尼系数
var deceleration = mui.os.ios?0.003:0.0009;
$('.mui-scroll-wrapper').scroll({
bounce: false,
indicators: true, //是否显示滚动条
deceleration:deceleration
});
$.ready(function() {
//循环初始化所有下拉刷新,上拉加载。
$.each(document.querySelectorAll('.mui-slider-group .mui-scroll'), function(index, pullRefreshEl) {
$(pullRefreshEl).pullToRefresh({
down: {
callback: function() {
var self = this;
setTimeout(function() {
var ul = self.element.querySelector('.mui-table-view');
ul.insertBefore(createFragment(ul, index, 10, true), ul.firstChild);
self.endPullDownToRefresh();
}, 1000);
}
},
up: {
callback: function() {
var self = this;
setTimeout(function() {
var ul = self.element.querySelector('.mui-table-view');
ul.appendChild(createFragment(ul, index, 5));
self.endPullUpToRefresh();
}, 1000);
}
}
});
});
var createFragment = function(ul, index, count, reverse) {
var length = ul.querySelectorAll('li').length;
var fragment = document.createDocumentFragment();
var li;
for (var i = 0; i < count; i++) {
li = document.createElement('li');
li.className = 'mui-table-view-cell';
li.innerHTML = '第' + (index + 1) + '个选项卡子项-' + (length + (reverse ? (count - i) : (i + 1)));
fragment.appendChild(li);
}
return fragment;
};
});
})(mui);
</script>
</body>
</html>
Ricky_Cslg (作者)
通过js来获取动态添加的div的高度能获取得到, 然后左右滑动也有内容,就是不能上下滑动。
然后到mui.js 里面this.pages.length 这个就好像是<=0的。 所以报错?
2017-09-01 14:09
n***@gmail.com
发demo附件吧,你这样说不是很明白
2017-09-01 14:37