在最新的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页面上拉加载更多相关推荐

  1. java h5 上拉加载更多_移动端H5页面上拉加载更多功能实现(二)

    之前已经写过一篇关于上拉加载更多的文章,那个主要是根据滚动实现分页向后台发起请求实现.这次实现方式为后台返回所有需要加载的数据,前端这边做视觉上的分页效果.实现原理也是根据滚动距离触发加载更多的条件. ...

  2. html下拉自动加载更多,H5页面下拉加载更多(实用版)

    近期在做一个H5网站,需要下拉加载更多产品列表的功能.百度搜索了好久,什么说法都有,什么插件都有.   醉了.基本上每一个能直接拿来用的. 最后发现: 1.dropload.js 插件  还可以,但是 ...

  3. jQuery 上拉加载更多

    上拉加载,当用户浏览到页面底部时候,自动加载下一页的内容 不管是上拉加载还是下拉刷新,其实都离不开一个关键的事件:滚动条滚动事件. 本demo是窗口的滚动条事件,如果需要指定某个元素做上拉加载功能,请 ...

  4. jQuery上拉加载更多

    <header id="header">首 页</header><section id="main"><ul id=& ...

  5. 基于jquery的上拉加载更多

    一个简易的基于jquery的上拉加载更多demo,上拉加载的原理就是容器的高度+容器的scrollTop>=容器内容的高度,整个demo还加上了回弹的动效. <!DOCTYPE html& ...

  6. php中手机端ajax上拉加载更多,jQuery手机网页上拉加载更多

    手机网页和PC网页都可以使用的上拉加载更多内容,其中LoadingDataFn自己改为ajax加载就可以了var page = 1, //分页码 off_on = false, //分页开关(滚动加载 ...

  7. H5——移动端JQ实现下拉刷新、上拉加载更多

    前言 这里用的JQ库里免费插件__dropload,效果图在文末 引入 去上面链接里面下载内容,可以本地引入 <link rel="stylesheet" href=&quo ...

  8. js实现上拉加载更多

    先贴代码: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF- ...

  9. ajax 下拉刷新 上拉加载更多,局部刷新iscroll控件的具体使用(下拉刷新,上拉加载更多)...

    标签下,这是调用iscroll的必要条件,否则会出现不能刷新或者不能滑动页面的情况.此外还有商量刷新及下拉刷新的标签,在iscroll中有这两个标签的样式,若不想用默认的样式,也可通过覆盖的方式添加其 ...

最新文章

  1. vue中使用markdown富文本,并在html页面中展示
  2. 5号发工资和25号发工资,真能看出公司是否靠谱?
  3. iis配置js支持读取json文件配置
  4. leetcode 309. Best Time to Buy and Sell Stock with Cooldown | 309. 最佳买卖股票时机含冷冻期(动态规划)
  5. 一个优秀的前端工程师应具备哪些技能?
  6. sklearn.metrics.roc_curve
  7. SpringBoot整合freemarker找不到静态资源ftl文件解决办法
  8. 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库04 —— 安装HAWQ插件PXF3.3.0.0...
  9. 在MOSS2007中使用网页获取部件
  10. 动态添加table表格内容,填充审批意见。
  11. 关于BT.709标准
  12. 超详细三维建模教程【小白专用】
  13. android4.4内存,Android 4.4只需512MB内存?别高兴太早
  14. ISIS协议的有关认识
  15. 前端程序员《HTML》标签学习
  16. redis-replicator使用的一点点心得
  17. 【Linux(一)】最新VMware虚拟机下载与安装
  18. DDoS攻击流量检测方法
  19. zookeeper的使用与集群搭建以及原理应用
  20. python学习小报3--python语法入门

热门文章

  1. QT 中多线程实现方法总结
  2. Creo二次开发:根据参数在指定文件夹中查找模型
  3. 小巧有线千兆路由器推荐
  4. 运算放大器使用六原则
  5. 动作一键制作ps信号干扰故障效果
  6. 中国电信3G业务抢先发 3G终端国产占到六席
  7. CentOS Linux系统下swp,swo文件扩展名临时隐藏文件
  8. 中国移动互联网100位精英
  9. [ENVI] 定量遥感实验-地表温度反演与地表温度测定 (超详细步骤)
  10. 【资源下载】动手为王 - 整合迁移与数据恢复实践