可​根据需求定制的jquery分页

可根据需求定制的jquery分页

本文讲述作者自己用jquery实现的,便于以后使用的分页框架。该分页框架兼容IE,FF,Chrome等主流浏览器,便于移植,可根据需求定制,不需要引入css样式,样式是使用json传入。

1,使用方法:

在需要设置分页的html文件里引入两个文件.一个是jquery.js,另外一个就是jquery.pager.update-1.0.js(这个是核心代码)。

<script src="jquery.js" type="text/javascript"></script> 
<script src="jquery.pager.update-1.0.js" type="text/javascript"></script>

html中body部分的内容如下:

<h1 id="result">Click the pager below.</h1>  
<div id="pager" class="jqpager"></div>

需要自己写的js如下;

    <script type="text/javascript" language="javascript">  
        var RECORD_COUNT = 200;// 记录数
        var PAGE_SIZE = 10;// 每页显示的条数
        var LI_NUM = 5;// 显示的数字按钮个数
        // 设置一些样式
        var textButtonCss = {// 设置显示文本按钮的样式,根据自己需要定制
            width:‘40px‘,
            height:‘28px‘
        };

        var TEXT_0 = {
            firsttext:‘<<‘,// 首页按钮的显示内容
            prevtext:‘<‘,// 上一页按钮的显示内容
            nexttext:‘>‘,// 下一页按钮显示的内容
            lasttext:‘>>‘// 末页按钮显示的内容
        };

         //pagenumber 为当前页码  
         //pagecount 为显示页数  
         //PageClick 为回调函数  
         //pageclickednumber 为点击页码  
        $(function() {  
            $("#pager").pager({ pagenumber: 1, recordcount: RECORD_COUNT,pagesize:PAGE_SIZE,css_textButton:textButtonCss,text:TEXT_0, liNum:LI_NUM,buttonClickCallback: PageClick });  
            $("#result").html("Clicked Page " + 1);  
        });  
  
        PageClick = function(pageclickednumber) {  
            $("#pager").pager({ pagenumber: pageclickednumber, recordcount: RECORD_COUNT,pagesize:PAGE_SIZE,css_textButton:textButtonCss,text:TEXT_0,liNum:LI_NUM, buttonClickCallback: PageClick });  
            $("#result").html("Clicked Page " + pageclickednumber);  
        }  
         
    </script>

当然,能定制的不仅仅是这些,在jquery.pager.update-1.0.js找到可以定制的内容.

如下(我把其中的按钮分成两种:1,文本按钮,2,数字按钮):

 $.fn.pager.defaults = {
        pagenumber: 1,// 当前页码
        recordcount: 20,// 记录总数
        pagesize: 10,// 每页显示记录数
        liNum:5,// 显示数字的个数
        text:{// 页面上需要显示的文本,除数字外
            firsttext: ‘<<‘,//显示的第一页文本
            prevtext: ‘<‘,//显示的前一页文本
            nexttext: ‘>‘,//显示的下一页文本
            lasttext: ‘>>‘//显示的最后一页文本
        },
        css_textButton:{// 文本按钮样式
            width:‘80px‘,
            height:‘28px‘
        },
        css_classPages:{// 按钮外面的ul的样式
            display:‘block‘,
            border:‘none‘,
            textTransform:‘uppercase‘,
            margin:‘2px 0 15px 2px‘,
            padding:‘0‘,
            cursor:‘pointer‘
        },
        css_classPagesLi:{// 所有按钮的样式
             width:‘30px‘,
             height:‘28px‘,
             lineHeight:‘28px‘,
             listStyle:‘none‘,
             float:‘left‘,
             border:‘1px solid #ccc‘,
             borderRadius:‘4px‘,
             textDecoration:‘none‘,
             margin:‘0 5px 0 0‘,
             textAlign:‘center‘,
             fontSize:‘12px‘,
             fontFamily:‘微软雅黑‘
        },
        css_classPgEmpty:{// 文本按钮不能点击时的样式
            border:‘1px solid #aaa‘,
            color:‘#aaa‘,
            cursor:‘default‘
        },
        css_classPgCurrent:{// 当前页码的样式
            border:‘1px solid #aaa‘,
            color:‘#000‘,
            fontWeight:‘700‘,
            backgroundColor:‘#eee‘
        },
        css_classPagesLiHover:{// 鼠标经过时显示的样式
            border:‘1px solid #003f7e‘
        }
    };

现在分享一下核心的jquery.pager.update-1.0.js代码吧。

(function($) {
    $.fn.pager = function(options) {
        var opts = $.extend({}, $.fn.pager.defaults, options);
        return this.each(function() {
			$(this).empty().append(renderpager(opts));
            $(‘ li‘, this).mouseover(function() { document.body.style.cursor = "pointer"; }).mouseout(function() { document.body.style.cursor = "auto"; });
        });
    };

    function getPageCount(totalCount, pageSize) {
        var pageCount = 0;
        pageCount = parseInt(totalCount / pageSize);
        if (totalCount % pageSize > 0) {
            pageCount++;
        }
        return pageCount;
    }
	var textButtonStyle,classPagesCss,classPagesLiCss,classPgEmptyCss,classPgCurrentCss,classPagesLiHoverCss;
    function renderpager(opts) {
		var pagecount = getPageCount(opts.recordcount, opts.pagesize);
		var firsttext = opts.text.firsttext;
		var prevtext = opts.text.prevtext;
		var nexttext = opts.text.nexttext;
		var lasttext = opts.text.lasttext;
		var pagenumber = parseInt(opts.pagenumber);
		var recordcount = opts.recordcoun;
		var buttonClickCallback = opts.buttonClickCallback;
		var liNum = opts.liNum;

		textButtonStyle = opts.css_textButton;
		classPagesCss = opts.css_classPages;
		classPagesLiCss = opts.css_classPagesLi;
		classPgEmptyCss = opts.css_classPgEmpty;
		classPgCurrentCss = opts.css_classPgCurrent;
		classPagesLiHoverCss = opts.css_classPagesLiHover;

        var $pager = $(‘<ul class="pages"></ul>‘);
	$pager.css(classPagesCss);

        $pager.append(renderButton(‘first‘, firsttext, pagenumber, pagecount, buttonClickCallback)).append(renderButton(‘prev‘, prevtext, pagenumber, pagecount, buttonClickCallback));

        var startPoint = 1;
        var endPoint = liNum;
		var space = (endPoint-1)/2;
        if (pagenumber > pagecount) {
            pagenumber = pagecount;
        }
        if (pagenumber > space) {
            startPoint = pagenumber - space;
            endPoint = pagenumber + space;
        }
        if (endPoint > pagecount) {
            startPoint = pagecount - space*2;
            endPoint = pagecount;
        }
        if (startPoint < 1) {
            startPoint = 1;
        }

        for (var page = startPoint; page <= endPoint; page++) {
            var currentButton = $(‘<li class="page-number">‘ + (page) + ‘</li>‘);
			currentButton.css(classPagesLiCss).hover(function(){$(this).css(classPagesLiHoverCss);},function(){$(this).css(classPagesLiCss);});
            page == pagenumber ? currentButton.css(classPgCurrentCss): currentButton.click(function() { buttonClickCallback(this.firstChild.data); });
            currentButton.appendTo($pager);
        }

		$pager.append(renderButton(‘next‘, nexttext, pagenumber, pagecount, buttonClickCallback)).append(renderButton(‘last‘, lasttext, pagenumber, pagecount, buttonClickCallback));
        

        return $pager;
    }

    // 渲染按钮
    function renderButton(buttonLabel, buttonText, pagenumber, pagecount, buttonClickCallback) {
        var $Button = $(‘<li class="pgNext">‘ + buttonText + ‘</li>‘);

        var destPage = 1;
        switch (buttonLabel) {
            case "first":
                destPage = 1;
                break;
            case "prev":
                destPage = pagenumber - 1;
                break;
            case "next":
                destPage = pagenumber + 1;
                break;
            case "last":
                destPage = pagecount;
                break;
        }

        if (buttonLabel == "first" || buttonLabel == "prev") {
            pagenumber <= 1 ? $Button.css(classPgEmptyCss) : $Button.click(function() { buttonClickCallback(destPage); });
        }else {
            pagenumber >= pagecount ? $Button.css(classPgEmptyCss) : $Button.click(function() { buttonClickCallback(destPage); });
        }

		$Button.css(classPagesLiCss).hover(function(){$(this).css(classPagesLiHoverCss);},function(){$(this).css(classPagesLiCss).css(textButtonStyle);}).css(textButtonStyle);

        return $Button;
    }

    $.fn.pager.defaults = {
        pagenumber: 1,// 当前页码
        recordcount: 20,// 记录总数
        pagesize: 10,// 每页显示记录数
		liNum:5,// 显示数字的个数
		text:{// 页面上需要显示的文本,除数字外
			firsttext: ‘<<‘,//显示的第一页文本
			prevtext: ‘<‘,//显示的前一页文本
			nexttext: ‘>‘,//显示的下一页文本
			lasttext: ‘>>‘//显示的最后一页文本
		},
		css_textButton:{
			width:‘80px‘,
			height:‘28px‘
		},
		css_classPages:{
			display:‘block‘,
			border:‘none‘,
			textTransform:‘uppercase‘,
			margin:‘2px 0 15px 2px‘,
			padding:‘0‘,
			cursor:‘pointer‘
		},
		css_classPagesLi:{
			 width:‘30px‘,
			 height:‘28px‘,
			 lineHeight:‘28px‘,
			 listStyle:‘none‘,
			 float:‘left‘,
			 border:‘1px solid #ccc‘,
			 borderRadius:‘4px‘,
			 textDecoration:‘none‘,
			 margin:‘0 5px 0 0‘,
			 textAlign:‘center‘,
			 fontSize:‘12px‘,
			 fontFamily:‘微软雅黑‘
		},
		css_classPgEmpty:{
			border:‘1px solid #aaa‘,
			color:‘#aaa‘,
			cursor:‘default‘
		},
		css_classPgCurrent:{
			border:‘1px solid #aaa‘,
			color:‘#000‘,
			fontWeight:‘700‘,
			backgroundColor:‘#eee‘
		},
		css_classPagesLiHover:{
			border:‘1px solid #003f7e‘
		}
    };
})(jQuery);

2,效果图:

如有错误,欢迎指出。

时间: 2024-12-27 01:25:26

可​根据需求定制的jquery分页的相关文章

jquery分页插件

jquery.mypagination.js 文件: /* * * * jquery分页插件 * 1.0  zheng 2014-03-18 * 1.1  兼容url包含#号地址,GoToPage可以指定锚点(特殊需求)2014-04-10 09:00:34 * 1.2  可以配置分页条列出页面数 * 1.3  增加了页面码跳转功能 *  $('#mypage').scPagination(555, { *              pageSize: 10,//每页显示的记录条数 *    

Jquery 分页

分页:可以说是所有做程序的开发者的必须会的,分页有很多种,当然最终还是以业务为需求取决于哪一种方法,下面我介绍的是 SQL语句结合Jquery做的一个Jquery的分页插件,通过个人三年的经验总结的一下东西,不知道是否好用.适用性如何,不过我是用顺手了,如果你觉得好用,谢谢分享下,不好用或者您有什么改进的方法,留言,谢谢知道,不多说 JS做分页首先你得了解下闭包的概念(我在这里也说清楚,自己度娘下) 分页参数:当前页(_PageIndex) .显示条数(_PageSize).总条数(_PageC

5种风格的 jQuery 分页效果【附代码】

5种风格的 jQuery 分页效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>jQuery Pagination - jPaginate</title> <meta http-equi

Jquery 分页插件 Jquery Pagination

Jquery 分页插件 Jquery Pagination 分页插件来说,我觉得适用就行,尽量简单然后能够根据不同的应用场景能够换肤.展现形式等. 对于初学者想写分页插件的同学,也可以看下源码,代码也挺简单明了的,也助于自己写个小插件. 不过我比较懒,一般直接拿着各种插件用,想偷懒的同学们也可以用用看: Jquery Pagination 大家可以去这里查看下演示:http://www.xuetub.com/plugin/jquery/221 使用方法也比较简单: <div id="pag

无刷新分页代码,jQuery分页完整示例

<!DOCTYPE html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>jQuery分页演示效果</title><script type="text/javascript" src="/ajaxjs/jquery1.3.2.js">&l

Jquery分页功能

Jquery代码 /// <reference path="jquery-1.9.1-vsdoc.js" />//锚点var anchor="#apage";$(function(){    pagerFun();    $("#btnSearch").click(function(){        var name=$.trim($("#txtHospitalName").val());        var

jquery分页组件(每页显示多少条)

/** * 功能说明:jPager 分页插件 * 参数说明:pages:[] 分页的控件个数 @id:显示分页的div ID,@showSelectPage: 是否显示当前分页的条目过滤下拉框 * @currentpage 当前第几页 * @pagesize type:number 每页显示多少条目 * @total type:number 总条数 * @totalpage type:number 总页码数 * */ (function ($) { 'use strict'; $.jPager

[JQuery]分页插件PageList

虽然已经有了[JQuery]分页插件jQuery pager plugin功能扩展,可惜蛋疼的UI不一样,只能重做一个,唉 基本上与pager类似,只不过跳转方式有所变化,以下是具体的js,其中defaultSettings为相关参数设定,其中要注意的是renderPerCall,这个参数如果设为false,将不执行html重绘 $.fn.pageList = function (arg, methodName) { if (typeof methodName === "string"

对jquery分页的升级

以前写的分页用了好久了,但是分页时除了传页面外有时还要传一些其它参数,以前操作时要把传的参数放到隐藏hidden中,分页时在取出来,这样比较麻烦,今天无事,重新包装了一下 直接上代码吧 css用了bootstrap中分页的样式 .pagination-lg > li:first-child > a, .pagination-lg > li:first-child > span { border-bottom-left-radius: 6px; border-top-left-rad