SUI 无限滚动 多次触发infinite
使用无线滚动这个SUI的组件时,如果将列表拉倒最低端,轻微上下拖动,会在debug的network中看到网页发起多次请求
正在回答 回答被采纳积分+1
老弟,不要那么麻烦,为何会发那么多请求呢?因为你加载完所有数据后滑动的时候,执行这个方法
$(document).on('infinite', '.infinite-scroll-bottom', function() { if(loading) return; addItems(pageSize, pageNum); });
你只需在图一中$('.infinite-scroll-preloader').hide();后面加个return,当加载完所有数据后,直接跳出方法,这样loading就不执行下面的loading = false; 此时loading为true,那上面我贴的这个方法中if(loading) return; 随便你怎么滑,我都不执行下面的addItems(pageSize, pageNum); 也就不会一直发送请求啦,而且数据已经加载完了
保留
if (total >= maxItems) {
$.detachInfiniteScroll($('.infinite-scroll'));
$('.infinite-scroll-preloader').remove();
return;
}
增加
function appendPreloader(){
var html = '<div class="infinite-scroll-preloader"><div class="preloader"></div></div>'
$.detachInfiniteScroll($('.infinite-scroll'));
$('.infinite-scroll-preloader').remove();
$.attachInfiniteScroll($('.infinite-scroll'));
$('.infinite-scroll').append(html);
}
在下面三个function中调用加入的appendPreloader
$('#shoplist-search-div').on(
'click',
'.button',
function(e) {
if (parentId) {// 如果传递过来的是一个父类下的子类
shopCategoryId = e.target.dataset.categoryId;
// 若之前已选定了别的category,则移除其选定效果,改成选定新的
if ($(e.target).hasClass('button-fill')) {
$(e.target).removeClass('button-fill');
shopCategoryId = '';
} else {
$(e.target).addClass('button-fill').siblings()
.removeClass('button-fill');
}
// 由于查询条件改变,清空店铺列表再进行查询
$('.list-div').empty();
appendPreloader();
// 重置页码
pageNum = 1;
addItems(pageSize, pageNum);
} else {// 如果传递过来的父类为空,则按照父类查询
parentId = e.target.dataset.categoryId;
if ($(e.target).hasClass('button-fill')) {
$(e.target).removeClass('button-fill');
parentId = '';
} else {
$(e.target).addClass('button-fill').siblings()
.removeClass('button-fill');
}
// 由于查询条件改变,清空店铺列表再进行查询
$('.list-div').empty();
// 重置页码
pageNum = 1;
addItems(pageSize, pageNum);
parentId = '';
}
});
$('#search').on('change', function(e) {
shopName = e.target.value;
$('.list-div').empty();
appendPreloader();
pageNum = 1;
addItems(pageSize, pageNum);
});
// 区域信息发生变化后,重置页码,清空原先的店铺列表,按照新的区域去查询
$('#area-search').on('change', function() {
areaId = $('#area-search').val();
$('.list-div').empty();
appendPreloader();
pageNum = 1;
addItems(pageSize, pageNum);
});
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星