简易版-滑动触发加载更多类容

/*触摸加载*/
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)
}
}
}
posted @ 2018-04-09 14:18  lingyucet  阅读(139)  评论(0)    收藏  举报