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);
  • 相关阅读:
    [原创]全新IFPGA-Cable----支持Xilinx/Altera/Lattice JTAG和UART
    [原创]Modelsim后仿真
    [原创]iFPGA-USB2.0 FT2232H USB & UART开发板使用说明
    [原创]X-HDL 4.2安装与使用
    [原创][Synth 8-2543] port connections cannot be mixed ordered and named ["*_Top.v":1151]
    [原创]..OBJgpio.axf: error: L6002U: Could not open file ..objgpio.o: No such file
    [原创]Zynq SDIO WIFI SotfAP调试
    [原创]时序图新画法
    [原创]基于Zynq SDIO WIFI 2.4G/5G SotfAP STA
    [原创]Zynq AXI-CDMA的使用
  • 原文地址:https://www.cnblogs.com/yangliulang/p/7246291.html
Copyright © 2011-2022 走看看