滚动到底加载更多

// 滚动到底部的时候加载更多
/* @param content dom 需要追加数据的dom
* @param opts object 其他额外参数
* @param loadText dom 需要显示加载状态的dom
* @param
*/
handleLoadMoreByScroll: function(content, opts) {
var hasLoadedEnd = false;
var isLoading = false;
var currOffsetTop = 0;
// 当前页面的高度加上滚动过去的高度和
var currScrollTotal = 0;
var currScrollDistance = 0;
var scrollBoundry = 0;
var setOnce = false;
var whitePage = true;
var loadText, scrolltobottom;
// 获取视口的高度
var pageHeight = document.documentElement.clientHeight;

opts = opts || {};
loadText = opts.loadText;
scrolltobottom = opts.scrolltobottom;

function handleScrollLoad(e) {
var st = document.documentElement.scrollTop || document.body.scrollTop;
currScrollTotal = st + pageHeight;
scrollBoundry = content.offset().top + content.outerHeight() + currScrollDistance;
// 当滚动过去的高度小于边界高度,这时候就显示加载更多
if (currScrollTotal < scrollBoundry) {
if (isLoading) {
setScrollTipsText();
return false;
}
// 否则就显示加载中
} else {
// 如果没有加载中。才让他加载,避免多次重复加载

if (!isLoading) {
isLoading = true;
setScrollTipsText();
// 没有加载到底才让他可以继续向下加载,
// 如果已经加载到底部了。就不再继续触发
if (!hasLoadedEnd) {
scrolltobottom();
}

}
}

}
function loadWhenNoData(){
if(whitePage){
whitePage = false;
scrolltobottom();
}
}
// 已经没有更多数据加载的时候触发
function complete(callback) {
reset();
hasLoadedEnd = true;
callback && callback();

return this;
}
// 避免某些必须要一开始就触发完成加载之后有数据也无法重新触发滚动到底部事件的情况
function start(callback) {
hasLoadedEnd = false;
callback && callback();
return this;
}
// 本次加载完成之后通过这个方法来让下次可以重新滚动加载
function reset(callback) {
isLoading = false;
callback && callback();

return this;
}
// 设置距离滚动dom底部多高的时候触发滚动加载
function setScrollDistance(distance) {
currScrollDistance = distance;

return this;
}

function setScrollTipsText() {
var text = '';
// 如果加载完所有的数据。就提示暂无更多。并不再往下走
if (hasLoadedEnd) {
if (!setOnce) {
setOnce = true;
text = "暂无更多~";
loadText.text(text);
}

return false;
}
// 如果加载中
text = isLoading ? "加载中..." : "加载更多";
loadText.text(text);

}
if (content.length > 0) {
$(window).on('scroll', handleScrollLoad);
}
return {
complete: complete,
reset: reset,
start: start,
loadWhenNoData:loadWhenNoData,
setScrollDistance: setScrollDistance,
setScrollTipsText: setScrollTipsText
}
},

转载于:https://www.cnblogs.com/yuweia/p/10524058.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值