Code Monkey home page Code Monkey logo

mricode.pagination's Introduction

#mricode.pagination jQuery 分页插件

##Get Started 引入文件:

<link href="mricode.pagination.css" rel="stylesheet" />
<script src="http://cdn.bootcss.com/jquery/2.1.4/jquery.js"></script>
<script src="mricode.pagination.js"></script>

创建分页显示标签

<div id="page" class="m-pagination"></div>

初始化插件

$("#page").pagination({
    pageSize: 10,
    total: 1000
});

##Ajax分页

初始化

$("#page").pagination({
    pageSize: 10,
    remote: {
        url: 'data.json',
        success: function (data) {
            // data为ajax返回数据
        },
        totalName:'total'
    }
});

remote默认配置

注:pageIndexName和pageSizeName,将在之后版本中移除,请使用pageParams修改请求参数名称

remote: {
    url: null,                      //[String]:ajax请求地址
    params: null,                   //[Object]:参数
    pageParams: null,               //[Function]:自定义请求参数
    success: null,                  //[Function]:请求成功回调函数
    beforeSend: null,               //[Function]:请求之前回调函数(同jQuery)
    complete: null,                 //[Function]:请求完成回调函数(同jQuery)
    pageIndexName: 'pageIndex',     //(已过时)[String]:自定义请求参数的当前页名称
    pageSizeName: 'pageSize',       //(已过时)[String]:自定义请求参数的每页数量名称
    totalName: 'total',             //[String]:自定义返回的总页数名称,对象属性可写成'data.total'
    traditional: false              //[Boolean]:参数序列化方式(同jQuery)
}

自定义page请求参数(默认为pageIndex, pageSize) 请求地址:www.google.com/search?index=0&size=10

remote: {
    url: 'www.google.com/search'
    pageParams: function(data){
        return {
            index:data.pageIndex,
            size:data.pageSize
        };
    }
}

##Options

####pageIndex

  • Type: Number
  • Default: 0

指定当前页数,索引从0开始,默认第1页

####pageSize

  • Type: Number
  • Default: 10

每页显示数据数

####total

  • Type: Number
  • Default: 0

总数据数,生成分页则必须配置该属性以生成分页。Ajax分页无需配置该属性。

####pageBtnCount

  • Type: Number
  • Default: 11

显示分页按钮数,包括首页页和上一页下一个按钮,推荐设置为基数

####showFirstLastBtn

  • Type: Boolean
  • Default: true

是否显示首尾页

####firstBtnText

  • Type: String
  • Default: null

首页按钮显示文字,不填则显示数字。该属性需设置showFirstLastBtn为true

####lastBtnText

  • Type: String
  • Default: null

未页按钮显示文字,不填则显示数字。该属性需设置showFirstLastBtn为true

####prevBtnText

  • Type: String
  • Default: &laquo;

上一页按钮显示文字,默认为«

####nextBtnText

  • Type: String
  • Default: &raquo;

下一页按钮显示文字,默认为»

####loadFirstPage

  • Type: Boolean
  • Default: true

是否加载第一页,页面第一次打开可设置不加载首页数据,首页数据是页面直接返回,之后点击分页按钮自动加载数据

####pageElementSort

  • Type: Array
  • Default: ['$page', '$size', '$jump', '$info']

page元素排序

'$page':分页按钮

'$size':分页大小

'$jump':跳转按钮

'info':分页信息(1到20条, 共216条数据 )

####showInfo

  • Type: Boolean
  • Default: false

是否显示分页信息

####infoFormat

  • Type: String
  • Default: {start} ~ {end} of {total} entires

显示分页信息 {start}:每页显示的第一条数据,{end}:每页显示的最后一条数据,{total}:总数据数

####noInfoText

  • Type: String
  • Default: 0 entires

没有数据时显示信息

####showJump

  • Type: Boolean
  • Default: false

是否显示跳转页

####jumpBtnText

  • Type: String
  • Default: Go

跳转按钮显示文字

####showPageSizes

  • Type: Boolean
  • Default: false

是否显示选择每页数量

####pageSizeItems

  • Type: Array
  • Default: [5, 10, 15, 20]

配置可选每页数量

##Methods

####setPageIndex

$("#page").pagination('setPageIndex', pageIndex);
  • pageIndex:Number

####setPageSize

$("#page").pagination('setPageSize', pageSize);
  • pageSize:Number

####setRemoteUrl

$("#page").pagination('setRemoteUrl', url);
  • url:String

####setParams

$("#page").pagination('setParams', params);
  • params:Object

####destroy

$("#page").pagination('destroy');

####重新生成分页

$("#page").pagination('render', [total]);
  • total:Number

####重新发起Ajax请求

$("#page").pagination('remote');

####判断是否初始化

$("#page").pagination();

return:Boolean

####获取当前pageIndex

$("#page").pagination('getPageIndex');

return:Number

##Events

####pageClicked

$("#page").on("pageClicked", function (event, data) {
    //分页按钮点击事件
}

####jumpClicked

$("#page").on("jumpClicked", function (event, data) {
    //跳转按钮点击事件
}

####pageSizeChanged

$("#page").on("pageSizeChanged", function (event, data) {
    //页面大小切换事件
}

mricode.pagination's People

Contributors

mricle avatar q27488 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mricode.pagination's Issues

设置pageSizeItems报错

Uncaught TypeError: Cannot read property 'pageSizeItems' of undefined mricode.pagination.js:79
我看了代码,这一行少了一对括号(粗体),应写成:
this.options.pageSizeItems = options.pageSizeItems || (($.fn.pagination.defaults &amp;&amp; $.fn.pagination.defaults.pageSizeItems) ? $.fn.pagination.defaults.pageSizeItems : defaultOption.pageSizeItems**)**;

厉害

谢谢你写的这个插件。 不过在手机上输入框不能使用,这个问题,我这边应该怎么改。

不太理解暴露出来的setPageIndex方法的作用

setPageIndex: function (pageIndex) {
if (pageIndex !== undefined && pageIndex !== null) {
this.currentPageIndex = utility.convertInt(pageIndex);
}
}

可以看出来仅仅是赋值给了当前页码,并没有对已经存在的分页做相应的处理哇?
这个方法是用来做什么用的?

搜索后Jump框会消失

打开页面后是正常的
temp1

执行模糊搜索,无数据
temp22

删除模糊搜索关键字,出现数据,分页正常,但是Jump框消失
temp2

缺少错误回调

一些时候请求错误,这时候需要错误回调,只在控制台扔出一个错误信息有时候不够。

不会用

在IE和chrome上运行test例子都出现问题,chrome是指无法请求data.json。大概是url不支持。IE上莫名其妙说btn_search没有定义,删除后还是没有什么效果。真是分页插件都没一个简单好用的。

返回函数的返回值对"total"的赋值问题

ajaxCallBack: function (result) {
            var total = utility.mapObjectNameRecursion(result, this.options.remote.totalName);
            if (total == null || total == undefined)
                throw new Error("the response of totalName :  '" + this.options.remote.totalName + "'  not found.");
            total = utility.convertInt(total);
            this.total = total;
            var lastPageNum = this.getLastPageNum();
            if (this.currentPageIndex > 0 && lastPageNum - 1 < this.currentPageIndex) {
                this.setPageIndex(lastPageNum - 1);
                this.remote();
            } else {
                if (typeof this.options.remote.success === 'function') this.options.remote.success(result);
                this.renderPagination();
            }
        },

代码中total的赋值不够灵活,这样的赋值方式固定死了返回的数据格式
必须如下: data = {total: 'xxx'},实际返回数据格式是不确定的,所以这块最好在 this.options.remote暴露出来。

bug 反馈

  1. 配置了infoFormat: '{start} 至 {end} 条, 共 {total} 条', 但查询数据为0的条的适合, 显示的是: 0 entires
    2.当上一次请求返回为0条数据后, 再次切换条件查询, 出现; pageNumber = -1. 并且导致页数元素高亮没有.
  2. 建议pageNumber 就从1开始, 而不是下标的概念. 服务端还得 + 1, 别扭.

PHP connection assistance

Hello,
Is there anyone available to help me with integrating this pagination with my PHP database? I would like to use this script to pull images from my database one page at a time as the user clicks through the pagination links.

Thanks

关于 method setParams 的体验

很多情况下, 是在原有的param上进行部分参数的修改, 然后发请求.
已存在setParam, 建议提供一个getParam,
这样在海量的参数中, 一个获得原有的, 修改部分参数, 然后在set.
因为在set中直接extend也不太好把控.

小量数据, 致命性体验 切换 pageSize

选择 pageSize 一页显示多少天数据体验(bug);

一共10条数据. 每页显示5条, 两页可以正常分页, 当选择pageSize为15后, 只有一页数据了, 但是, 分页组件不显示分页操作元素了, 只能重新查询或者刷新页面了. 体验不好, 建议就算只有一页, 不需要隐藏.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.