Jquery 实现H5页面上拉加载更多
在最新的H5开发项目中,需要开发上拉加载更多的功能,如何实现上拉加载更多,网上有很多插件可以实现,如:mescroll、mui、isScroll等等,最初我也是选择了使用插件,但在使用过程中发现了如果开发页面不是全局下拉刷新时,在IOS、Android上会出现卡顿及无法拉动的情况,因此感觉某些插件不适合做局部刷新,于是想用Jquery实现在移动端的上拉加载更多功能,在实现之后感觉还不错哒,在此记录一下自己的成果,嘻嘻(#^.^#)。
首先根据产品需求写出页面布局:如下图:
功能需求是点击母婴用品列表切换类别,并实现上拉加载数据。
我的思路是通过点击Tab请求不同数据加载,监听 $(window).scroll(function(){}) 事件,当屏幕滑动到底部时,分页加载,此处功能代码如下:
$(window).scroll(function(){var scrollTop = $(this).scrollTop(); //滚动条距离顶部的高度var scrollHeight = $(document).height(); //当前页面的总高度var clientHeight = $(this).height(); //当前可视的页面高度if(scrollTop + clientHeight >= scrollHeight - 50){ //距离顶部+当前高度 >=文档总高度 即代表滑动到底部 注:-50 上拉加载更灵敏//加载数据 } });
理清思路,具体业务逻辑js代码如下:
var pageAjax = { pageNo : 1,pageSize : 10,loader : $(".mui-loading"), //加载中endText : $(".mui-end"), //结束loadMore : $(".mui-more"), //加载更多promotion_id : $("input[name='promotion_id']").val(),curNavIndex : $(".pro-top .active").data('id'),shiftNav : $(".product-search .pro-top").find("li"),throttle : function(func,delay){ //延缓滚动加载次数 防止抖动var timer = null;var startTime = Date.now();return function(){var curTime = Date.now();var remaining = delay - (curTime - startTime);var context = this;var args = arguments;clearTimeout(timer);if(remaining <= 0){func.apply(context,args);startTime = Date.now();}else{timer = setTimeout(func,remaining);}}},getDataInit : function(dataId){mui.ajax("{:url('Specialactivity/catGoodsList')}",{data:{num : pageAjax.pageSize,page : pageAjax.pageNo,cat_id : dataId,promotion_id : pageAjax.promotion_id},dataType:'json',type:'post',timeout:10000,headers:{'Content-Type':'application/json'}, beforeSend:function(){pageAjax.loader.show();pageAjax.loadMore.hide();pageAjax.endText.hide();}, success:function(data){var listData=[];//console.log(data); pageAjax.loader.hide();if(data.code == 200){var list = data.data;var html = $("#goodsTemp").render(list);$("#dataList").append(html);pageAjax.loadMore.show(); }if(data.code == 400){pageAjax.endText.show();pageAjax.loader.hide();pageAjax.loadMore.hide();}},error:function(data){console.log(data);} });},clickAjax : function(){pageAjax.shiftNav.on("tap",function(){pageAjax.pageNo = 1; //重置页码为1$("#dataList").html(""); //清空容器内容 pageAjax.loadMore.hide(); //清空加载更多var cat_id = $(this).data("id"); //获取类别id$(this).addClass("active").siblings("li").removeClass("active");pageAjax.getDataInit(cat_id); });},scrollFuc : function(){$(window).scroll(pageAjax.throttle(function(){var scrollTop = $(this).scrollTop(); //滚动条距离顶部的高度var scrollHeight = $(document).height(); //当前页面的总高度var clientHeight = $(this).height(); //当前可视的页面高度if(scrollTop + clientHeight >= scrollHeight - 50){ //距离顶部+当前高度 >=文档总高度 即代表滑动到底部if($(".mui-end").is(":hidden")){pageAjax.pageNo++;var cat_id = $(".pro-top").find("li.active").data("id"); pageAjax.getDataInit(cat_id); }else{ pageAjax.loadMore.hide(); } }},2000));}};$(function(){mui.init();$.views.settings.delimiters("<%", "%>"); $.views.converters({ parseNum: function(value){ return parseInt(value); } }); $(".mui-loading,.mui-end").hide(); pageAjax.clickAjax(); pageAjax.scrollFuc(); pageAjax.getDataInit(pageAjax.curNavIndex);
});
HTML代码如下:
<div class="product-search"><ul class="pro-top"><li class="" data-id="3">母婴用品</li><li data-id="7" class="active">居家生活</li></ul> </div> <div class="pro-bottom"><ul id="dataList" ></ul><div class="mui-loading"><div class="mui-spinner"></div></div><div class="mui-more"><p style="text-align: center;font-size: 10px;">-- 上拉加载更多 --</p></div><div class="mui-end"><p style="text-align: center;font-size: 10px;">-- 我是有底线的 --</p></div> </div>
业务逻辑很简单,关键在于scroll事件的去抖动: pageAjax.throttle() 、
上拉加载的条件: if($(".mui-end").is(":hidden")) ,这样就实现了上拉加载更多的功能啦~
此文章旨在记录思路O(∩_∩)O啦啦~~
转载于:https://www.cnblogs.com/boomupupup/p/9529220.html
Jquery 实现H5页面上拉加载更多相关推荐
- java h5 上拉加载更多_移动端H5页面上拉加载更多功能实现(二)
之前已经写过一篇关于上拉加载更多的文章,那个主要是根据滚动实现分页向后台发起请求实现.这次实现方式为后台返回所有需要加载的数据,前端这边做视觉上的分页效果.实现原理也是根据滚动距离触发加载更多的条件. ...
- html下拉自动加载更多,H5页面下拉加载更多(实用版)
近期在做一个H5网站,需要下拉加载更多产品列表的功能.百度搜索了好久,什么说法都有,什么插件都有. 醉了.基本上每一个能直接拿来用的. 最后发现: 1.dropload.js 插件 还可以,但是 ...
- jQuery 上拉加载更多
上拉加载,当用户浏览到页面底部时候,自动加载下一页的内容 不管是上拉加载还是下拉刷新,其实都离不开一个关键的事件:滚动条滚动事件. 本demo是窗口的滚动条事件,如果需要指定某个元素做上拉加载功能,请 ...
- jQuery上拉加载更多
<header id="header">首 页</header><section id="main"><ul id=& ...
- 基于jquery的上拉加载更多
一个简易的基于jquery的上拉加载更多demo,上拉加载的原理就是容器的高度+容器的scrollTop>=容器内容的高度,整个demo还加上了回弹的动效. <!DOCTYPE html& ...
- php中手机端ajax上拉加载更多,jQuery手机网页上拉加载更多
手机网页和PC网页都可以使用的上拉加载更多内容,其中LoadingDataFn自己改为ajax加载就可以了var page = 1, //分页码 off_on = false, //分页开关(滚动加载 ...
- H5——移动端JQ实现下拉刷新、上拉加载更多
前言 这里用的JQ库里免费插件__dropload,效果图在文末 引入 去上面链接里面下载内容,可以本地引入 <link rel="stylesheet" href=&quo ...
- js实现上拉加载更多
先贴代码: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF- ...
- ajax 下拉刷新 上拉加载更多,局部刷新iscroll控件的具体使用(下拉刷新,上拉加载更多)...
标签下,这是调用iscroll的必要条件,否则会出现不能刷新或者不能滑动页面的情况.此外还有商量刷新及下拉刷新的标签,在iscroll中有这两个标签的样式,若不想用默认的样式,也可通过覆盖的方式添加其 ...
最新文章
- vue中使用markdown富文本,并在html页面中展示
- 5号发工资和25号发工资,真能看出公司是否靠谱?
- iis配置js支持读取json文件配置
- leetcode 309. Best Time to Buy and Sell Stock with Cooldown | 309. 最佳买卖股票时机含冷冻期(动态规划)
- 一个优秀的前端工程师应具备哪些技能?
- sklearn.metrics.roc_curve
- SpringBoot整合freemarker找不到静态资源ftl文件解决办法
- 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库04 —— 安装HAWQ插件PXF3.3.0.0...
- 在MOSS2007中使用网页获取部件
- 动态添加table表格内容,填充审批意见。
- 关于BT.709标准
- 超详细三维建模教程【小白专用】
- android4.4内存,Android 4.4只需512MB内存?别高兴太早
- ISIS协议的有关认识
- 前端程序员《HTML》标签学习
- redis-replicator使用的一点点心得
- 【Linux(一)】最新VMware虚拟机下载与安装
- DDoS攻击流量检测方法
- zookeeper的使用与集群搭建以及原理应用
- python学习小报3--python语法入门