• 移动端分页插件


    /*******
    <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);
  • 相关阅读:
    Sample Page
    3.21之前刷题总结
    存储过程动态组建查询where语句
    SQL常备知识
    学习SilverLight:(1)SilverLight3.0和JavaScript交互
    SQL SERVER 2005 Tempdb
    学习atlas
    sql server系统表详细说明(转)
    js 基数排序的过程
    vuerouter 刷新页面后 url地址不变 参数还在 保留当前页 routerlink取值 this.$route
  • 原文地址:https://www.cnblogs.com/yangliulang/p/7246291.html
Copyright © 2020-2023  润新知