下拉刷新、加载数据功能

  感觉一个人玩lol也没意思了,玩会手机,看到这个下拉刷新功能就写了这个demo!

  这个demo写的比较随意,咱不能当做插件使用,基本思想是没问题的,要用就自己封装吧!

  直接上代码分析下吧!

布局:

<ul class="show-area" style="min-height:100px;"></ul>
<button class='page-btn-nick' >加载更多</button>

  就2行,只为实现功能,足矣!

  js也不复杂,先定义2个变量,贯穿整个demo,进了不要全局变量,当然,封装的时候也可以当做闭包参数!

var m=0,n=2;//m:button点击次数 n:一次加载几条数据

请求:

$.ajax('paging.html')

  这里我就写的本页面地址作为测试url。

下面请求成功后的处理就是重点了:

                    var obj={developer:[{name:'nick'},{name:'ljy'},{name:'xzl'},{name:'jeson'},{name:'yst'},{name:'zhw'},{name:'wqq'}]}
                    response=obj.developer;//假设请求到的数据是obj
                    m++;
                    var data='',elm='';
                    if(m>(response.length%n==0?response.length/n:parseInt(response.length/n))){
                        data=response.slice(n*(m-1));
                        $('.page-btn-nick').html('没有更多了');
                        $('.page-btn-nick').attr('disabled','disabled');
                    }else{
                        data=response.slice(n*(m-1),n*m);
                    }

中心思想:

  请求按钮点击一次,m+1,讲请求的数据拆分,只要需要的数据data;

data=response.slice(n*(m-1),n*m);

  slice(s,e)函数获取请求到的数据的一部分,s:response的起始位置,e结尾位置(取不到e位置的元素),返回值是一个含头不含尾的数组。

这里由于开始默认加载n条数据,m已经加了一次1了,所以要s和e要对应的改变;

将数据动态加载到页面:

                    var len=data.length;
                    for(var i= 0;i<len;i++){
                        elm+="<li>"+data[i].name+"</li>";
                    }
                    $('.show-area').append(elm);

这里的append()要比html()更优!

  我看有些developer是勇的html(),这样每加载一次,页面中的所有li将全部清空,在重新加载所有的li,感觉每次加载都要加载有点多余的数据,浪费啊……

  看上面的数据就知道,我是讲每次请求的数据在slice()一次,在添加到页面。这要写我每加载一次,只把这次加载的数据append到ul的最后,以前的li并不会清空,这要加载的数据就是每次想要多加的必要数据,没有重复添加,感觉给力点吧!

  后面我把请求数据的getData()作为button点击事件处理函数,同时放在判断后的下拉事件中,就可以实现点击按钮动态加载数据和下拉刷新加载数据了!

最后附上完整代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
    <title>paging nick</title>
    <style>
    </style>
</head>
<body>
    <ul class="show-area" style="min-height:100px;"></ul>
    <button class='page-btn-nick' >加载更多</button>
    <script src='http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js'></script>
    <script>
        ;(function(){
            getData();
            var m=0,n=2;//m:button点击次数 n:一次加载几条数据
            $('.page-btn-nick').click(getData);
            function getData(){
                $.ajax('paging.html').then(function(response){//测试url写本页面
                    var obj={developer:[{name:'nick'},{name:'ljy'},{name:'xzl'},{name:'jeson'},{name:'yst'},{name:'zhw'},{name:'wqq'}]}
                    response=obj.developer;//假设请求到的数据是obj
                    m++;
                    var data='',elm='';
                    if(m>(response.length%n==0?response.length/n:parseInt(response.length/n))){
                        data=response.slice(n*(m-1));
                        $('.page-btn-nick').html('没有更多了');
                        $('.page-btn-nick').attr('disabled','disabled');
                    }else{
                        data=response.slice(n*(m-1),n*m);
                    }
                    var len=data.length;
                    for(var i= 0;i<len;i++){
                        elm+="<li>"+data[i].name+"</li>";
                    }
                    $('.show-area').append(elm);
                },function(err){
                    console.log(err);
                });
            }

            $(".show-area").on("touchstart", function(e) {
                e.preventDefault();
                startX = e.originalEvent.changedTouches[0].pageX,
                        startY = e.originalEvent.changedTouches[0].pageY;
            });
            $(".show-area").on("touchmove", function(e) {
                e.preventDefault();
                moveEndX = e.originalEvent.changedTouches[0].pageX,
                        moveEndY = e.originalEvent.changedTouches[0].pageY,
                        X = moveEndX - startX,
                        Y = moveEndY - startY;

                if ( Math.abs(X) > Math.abs(Y) && X > 0 ) {
                    alert("left 2 right");
                }
                else if ( Math.abs(X) > Math.abs(Y) && X < 0 ) {
                    alert("right 2 left");
                }
                else if ( Math.abs(Y) > Math.abs(X) && Y > 0) {
                    alert("top 2 bottom");
                    getData();
                }
                else if ( Math.abs(Y) > Math.abs(X) && Y < 0 ) {
                    alert("bottom 2 top");
                }
                else{
                    alert("just touch");
                }
            });
        }());
    </script>
</body>
</html>
View Code

  可以直接复制完整代码,webstorm打开看看看,测试下吧!

移动端下拉事件就一笔带过了,可以参考我写的有关于移动化滑动事件的博文!

鄙人技术有限,若有不妥,望不吝赐教!

转载于:https://www.cnblogs.com/puyongsong/p/6035691.html

邀请码:a54ed48fee85400295d14c9e6def970b “奇奇SEO优化”钱柜软件是米图团队经过对搜素引擎算法多年跟踪研究,采用全新的智能云优化技术,开发出来的一款搜索引擎关键词优化工具:奇奇SEO优化软件。奇奇SEO优化软件能迅速在百度、谷歌、搜狗、搜搜、雅虎、有道、必应等搜索引擎中,依次进行目标网站的搜索,大幅度提高搜索引擎对网站的注重程度和关注度,提高网站在搜索引擎中的权重值。提高搜索引擎收录频率和收录量;提高网站访问量和关键字位置排名,迅速将优化的关键词显示在底层相关搜索,同样可以智能优化搜索引擎搜索下拉框,快速占领最火爆最抢眼的十个搜索下拉位置。我们坚信:必定成为网站必备工具! 奇奇SEO优化软件亮点 ●点击逼真。和真人点击一样,众多挂机者自动点击,分布式点击,挂机环境各不相同,点击逼真、真实,效果看得见! ●支持所有主流搜索引擎。挂机时会看到,全面、功能强大! ●支持点击地区设置。有针对性点击,和搜索引擎中的设置对应,针对性强,避免空点,提高效率! ●清空浏览痕迹、cookies、清除浏览缓存,点击有效 ●目标网页随机停留数秒后自动关闭 ●目标网页随机位置、随机二次点击、深入点击,将真实演绎到底! ●免费。挂机有积分即可免费使用,无资金担忧。 ●批量删除、批量更新、批量启用、批量停止 简单易操作 您可以用第一名点击器,来做这些事情 ●点击各类搜索引擎的竞价广告 ●点击关键词在搜索引擎结果中的自己的网站,提高关键词搜索排名 ●提高网站排名、提高关键词搜索指数、百度指数 ●刷百度下拉框、刷相关搜索 ●点击淘宝直通车竞价广告 ●点击阿里网销宝竞价广告任何你想象和在最新软件版本功能基础上,你可能用到第一名点击器。上述提及的搜索引擎,囊括了百度、谷歌、搜搜、搜狗、必应、有道、淘宝直通车、阿里网销宝等所有常见的搜素引擎,并且在以后使用中,视网友使用频率建议会不断增加,比如单百度点击,我们就已经包括了百度网页、百度图片、百度知道等搜索类型的点击,第一名点击器功能之强大,真正拿出时间好好用过的人,最有体会!当然,众多的功能,对绝大多数网友可能只使用了冰山一角,更多的潜在的用武之地,待你挖掘和琢磨! 奇奇SEO优化软件特点 1、简单易用 使用简单,操作方便,自动升级,针对个人网站永久免费。 2、高度安全 基于沙盒原理,有效拦截各类病毒木马下载程序,自动、收集过滤恶意网址。 3、真实有效 基于智能云优化技术,利用网络节点地域差异性,用户随机性,使访问效果真实有效 4、优化原理及手法 通过反馈网站权重数据包给搜索引擎,合理的分配网站的权重,提升网站的关注度和友好度,从而达到网站关键字排名迅速提升的效果。 5、完全兼容虚拟机运行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值