/*触摸加载*/
function touchLoad(target,targetState){
var _this = this;
var winH = $(window).height();
var appendElem ='<div>load data</div>';
_this.loadActive = true; //触发加载事件
_this.loadDom = {
viewMore:'<div class="load-view-more text-center">' +
'<span class="load-view-more-ico"></span>上拉可以加载更多' +
'</div>',
loading:'<div class="load-view-more text-center">' +
'<span class="loading-view-more-ico"></span>正在加载...' +
'</div>',
loadingEnd:'<div class="load-ending text-center"><span>别扯了~到底啦</span></div>'
};
$(targetState).html(_this.loadDom.viewMore); //状态设置
/*touch事件周期*/
$(document).on({
touchstart:function (event) {
touches(event);
touchStart(event,_this);
},
touchmove:function (event) {
touches(event);
touchMove(event,_this);
},
touchend:function (event) {
touches(event);
touchEnd(event,_this);
}
});
function touches(event) {
if(!event.touches){
event.touches = event.originalEvent.touches[0];
}
}
function touchStart(event,_this) {
_this.docH = $(document).height();
_this.posY = event.touches.pageY; //记录当前位置
}
function touchMove(event,_this) {
_this.curY = event.touches.pageY;
_this.moveY = _this.curY - _this.posY; //垂直位移
/*判断滑动方向*/
if(_this.moveY < 0){
_this.direction ="up";
}else if(_this.moveY > 0){
_this.direction ="down";
}
/*取绝对值*/
_this.absMoveY = Math.abs(_this.moveY);
_this.winScrollTop = $(window).scrollTop();
}
function touchEnd(event,_this) {
if(_this.direction === "up" && (_this.winScrollTop+winH+_this.absMoveY) > _this.docH){
$(targetState).html(_this.loadDom.loading);
if(!_this.loadActive){ //判断请求事件是否执行完
return false;
}
_this.loadActive = false;
settingAjax(_this.loadDom.viewMore,_this.loadActive,function () {
_this.loadActive = true; //设置为可触发请求事件
});
}
}
function settingAjax(loadDom,changeState,callBack) {
//请求数据
/* $.ajax({
url:''
}).done(function () {
autoAppendHtml();
$(targetState).html(_this.loadDom.viewMore);
// $(targetState).html(_this.loadDom.loadingEnd); //没数据加判断
});*/
//模拟数据加载
setTimeout(function () {
autoAppendHtml(appendElem);
$(targetState).html(loadDom);
changeState = true;
callBack();
},500);
function autoAppendHtml(appendElem) {
var html =appendElem;
$(target).append(html)
}
}
}