zoukankan      html  css  js  c++  java
  • 移动端分页插件

    /*******
    <div id="js-page-limit" class="page-limit" data-page-total='10' data-current-index='1'>
        正在加载更多...
    </div>
    var pageLimit = new PageLimit({
                    elem:$('#js-page-limit'),
                    loadType:'scroll',
                    loadStepText:['获取更多','正在加载..','没有更多数据'],
                    url:'data/test.json',
                    callback:function(ret){
                        console.log(ret)
                    },
                    params:{
                        type:'home',
                        limit:20
                    }
            });
    @elem -> 指定触发分页的钩子元素
    @loadType -> 触发分页的方式,手动敲击tap、滚动到底部触发scroll
    @url -> 分页的接口
    @loadStepText -> 触发分页的几个步骤的显示文本,三步,前,正在,最后一页
    @callback -> 分页数据请求返回成功
    @params -> 指定接口查询串
    
    @name 杨永
    @call 18911082352
    @version 1.0.0
    *********/
    
    ;(function($){
    
        var PageLimit = function(setting){
    
            var _this_ = this;
            //扩展相关数据
            this.setting = PageLimit._DEFAULT_SETTING_;
            this.setting = $.extend({},this.setting,setting);
            //保存总页数和当前页
            this.pageTotalSize = this.setting.elem.attr('data-page-total');
            this.pageCurrentIdx = this.setting.elem.attr('data-current-index');
            //初始化的时候加载一页
            this.loadPage();
            //根据加载类型,初始化不同的触发方式
            if(this.setting.loadType == 'tap'){
                this.setting.elem.tap(function(){
                    _this_.loadPage();
                }).text(this.setting.loadStepText[0]);
            }else{
                //如果是上拉触发
                this.setting.elem.css('opacity',0);
                $(window).scroll(function(){
                    window.clearTimeout(this.timer);
                    this.timer = window.setTimeout(function(){
                        var scrollTop = $(window).scrollTop();
                        var offsetTop = _this_.setting.elem.offset().top;
                        if(scrollTop+window.innerHeight>=offsetTop){
                            _this_.setting.elem.css('opacity',1);
                            if(!_this_.setting.elem.hasClass('page-state-loading')){
                                _this_.loadPage();
                            };
                        };    
                    },200);
                });
            };
    
        };
    
        PageLimit._DEFAULT_SETTING_ = {
            elem:null,
            loadType:'pull',
            url:'你还没有指定url.json',
            loadStepText:['获取更多','正在加载..','没有更多数据'],
            callback:null,
            params:{}
        };
    
        PageLimit.prototype = {
            loadPage:function(index){
                var self = this;
                var setting = this.setting;
                //如果加载完毕
                if(setting.elem.hasClass('page-state-loaded')){
                    setting.elem.text(setting.loadStepText[2]).css('opacity',1);
                    return;
                };
                if(setting.loadType == 'tap'){
                    setting.elem.text(setting.loadStepText[1]);
                }else{
                    setting.elem.text(setting.loadStepText[1]).css('opacity',1);
                };
                
                //当发起加载的时候,给加载标增加class=page-state-loading
                setting.elem.addClass('page-state-loading');
                //把当前加载页设置到params
                this.pageCurrentIdx = index || this.pageCurrentIdx;
                setting.params.page = this.pageCurrentIdx;
                //发起请求
                $.get(setting.url,setting.params,function(ret){
                    if(setting.loadType == 'tap'){
                        setting.elem.text(setting.loadStepText[0]);
                    }else{
                        setting.elem.text(setting.loadStepText[0]).css('opacity',0);
                    };
                    //当页数加载完毕,给加载标签增加状态
                    if(self.pageCurrentIdx == self.pageTotalSize){
                        setting.elem.addClass('page-state-loaded');
                    };
                    //加载成功后,把当前页加1、删除class=page-state-loading
                    setting.elem.removeClass('page-state-loading').attr('data-current-index',setting.params.page);
                    self.pageCurrentIdx++;
                    //回调函数
                    setting.callback&&setting.callback(ret);
                });
            }
        };
    
        window.PageLimit = PageLimit;
    
    })(Zepto);
  • 相关阅读:
    JavaScript Window
    3.1.3 背景音乐播放技术
    6.1 多媒体相关基本概念及计算问题
    11.5 知识产权考点讲解
    第15课 TortoiseGit程序操作介绍
    第16课 “远程 Git文档库” 的基础操作
    第11课 Git GUI程序的基本功能
    第12课 使用Git GUI
    第13课 SmartGit程序操作介绍
    第14课 SourceTree程序操作介绍
  • 原文地址:https://www.cnblogs.com/yangliulang/p/7246291.html
Copyright © 2011-2022 走看看