`

JQuery无刷新表格分页

阅读更多

摘要: 基于jquery面向对象的无刷新表格分页效果封装

 

<table id="cs_table" class="datatable"></table>

 

 html,body{margin: 0;padding:0}
        a:focus {outline: none;}
            /* 通用表格显示 */
        table, th, td {font: 12px Arial,Helvetica,sans-serif,'宋体';margin: 0;padding: 0}
        table{border-spacing: 0;border-collapse: collapse;}
        .datatable {width: 100%;border-style: none;background-color: #fff;margin-bottom: 20px;text-align: left;}
        .datatable th, .datatable td { padding: 5px;line-height: 30px}
        .datatable thead th {background-color: #eee;margin: 0;text-align: left;border-top: 1px solid #cfcfcf;border-bottom: 1px solid #cfcfcf;font-weight: 500}
        .datatable tbody td {background-color: #fff;border-bottom: 1px solid #ddd;table-layout:fixed;word-break:break-all;font-weight: 400}
        .datatable tbody tr.evenrow td {background-color: #f4f4f4;}
        .datatable tfoot td {background-color: #fafafa;text-align: right;border-bottom: 1px solid #cfcfcf;}
            /*表格分页列表*/
        .datatable td.paging a {border: 1px solid #eee; color: #444; margin: 4px; padding: 2px 7px; text-decoration: none; text-align:center;}
            /*表格分页当前页*/
        .datatable td.paging a.current {background: #eee; border: 1px solid #CFCFCF; color: #444; font-weight: bold;}
        .datatable td.paging a.current{border: 0;cursor: auto;background:none}

 

js封装对象

/**
 * 抽象化表格
 */
function abstractTable(){
    // ---------内容属性
    this.id = null;         // 每个表格都有唯一的一个id
    this.tableobj = null;  //表格对象
    this.rowNum = 0;       //行数
    this.colNum = 0;      //列数
    this.header = [];     //表头数据
    this.content = [];   //body数据
    // ----------提供外部使用获得表格内部数据
    this.currentClickRowID = 0;   //当前点击的行数据
    // --- 通过表头来获得这张表的列数
    this.getColNum = function(){
        this.colNum = this.header.length;
        return   this.colNum;
    }
    // -----------  表格自我构建行为
    this.clearTable = function(){};
    this.showHeader = function(){};
    this.showContent = function(begin,end){};
    this.showFoot = function(){};

    // --------- 分页功能属性
    this.allDataNum = 0;  // 总数据条数
    this.displayNum = 10; // 每页显示条数
    this.maxPageNum = 0;  // 最大页码值
    this.currentPageNum =1;// 当前页码值
    //tfoot分页组
    this.groupDataNum = 10;  //每组显示10页
    this.groupNum = 1;       //当前组

    // -------- 分页功能行为
    this.paginationFromBeginToEnd = function(begin,end){}
    this.first =  function(){}//首页
    this.last = function(){}//最后一页
    this.prev = function(){}//上一页
    this.next = function(){}//下一页
    this.goto = function(){} //跳到某页

    // ----------- 表格初始化
    this.init = function(begin,end){}

}

/*
 表格对象模板
 */
function tableTemplet(table_id){
    abstractTable.call(this);
    this.id = table_id;

}
/**
 * 表格对象
 * @param options
 */
function table(options){
    if(!options){return;}
    if(!$.isPlainObject(options)){return;}

    tableTemplet.call(this,options.tableId);
    //得到表格对象
    this.tableobj = $("#"+this.id);
    //清空表格内容
    this.clearTable = function(){
        this.tableobj.html(" ");
    }
    // 实现分页行为
    this.paginationFromBeginToEnd= function(x,y){
        this.maxPageNum = Math.ceil(this.allDataNum/this.displayNum);
        var arrPage = [];
        for(var i= x;i<y;i++){
            arrPage.push(this.content[i]);
        }
        return arrPage;
    }

    this.showHeader = function(){
        if(this.header != null){
           var  $thead = $("<thead>"),
                $tr = $("<tr>"),
                $th;
            for(var i=0;i<this.colNum;i++){
                $th = $("<th>").html(this.header[i]);
                $th.appendTo($tr);
            }
            $tr.appendTo($thead);
            $thead.appendTo(this.tableobj)
        }
    }
    //初始化tbody
    this.showContent = function(begin,end){
        if(this.content != null){
            var $tbody = $("<tbody>"),
                $tr,
                $td;
            var tempDaTa = this.paginationFromBeginToEnd(begin,end),
                len = tempDaTa.length;
            // 循环创建行
            for(var i=0;i<len;i++){
                $tr = $("<tr>").appendTo($tbody);
                if(i%2==1){
                    $tr.addClass("evenrow");
                }
                // 循环创建列  取得对象中的键
                for(var key in tempDaTa[i]){
                    $td = $("<td>").html(tempDaTa[i][key]).appendTo($tr);
                }
            }
            this.tableobj.append($tbody);
        }

    }
    //初始化tfoot
    this.showFoot = function(){
       var $tfoot = $("<tfoot>"),
           $tr = $("<tr>"),
           $td = $("<td>").attr("colspan",this.colNum).addClass("paging");
           $tr.append($td);
           $tfoot.append($tr);
           this.tableobj.append($tfoot);
           this.pagination($td);
    }
    //表格分页
    this.pagination = function(tdCell){
        var $td= typeof(tdCell) == "object" ? tdCell : $("#" + tdCell);
        //首页
        var oA = $("<a/>");
        oA.attr("href","#1");
        oA.html("首页");
        $td.append(oA);
        //上一页
        if(this.currentPageNum>=2){
            var oA = $("<a/>");
            oA.attr("href","#"+(this.currentPageNum - 1));
            oA.html("上一页");
            $td.append(oA);
        }
        //普通显示格式
        if(this.maxPageNum <= this.groupDataNum){  // 10页以内 为一组
            for(var i = 1;i <= this.maxPageNum ;i++){
                var oA = $("<a/>");
                oA.attr("href","#"+i);
                if(this.currentPageNum == i){
                    oA.attr("class","current");
                }
                oA.html(i);
                $td.append(oA);
            }
        }else{//超过10页以后(也就是第一组后)
             if(this.groupNum<=1){//第一组显示
                 for(var j = 1;j <= this.groupDataNum ;j++){
                     var oA = $("<a/>");
                     oA.attr("href","#"+j);
                     if(this.currentPageNum == j){
                         oA.attr("class","current");
                     }
                     oA.html(j);
                     $td.append(oA);

                 }
             }else{//第二组后面的显示
                 var begin = (this.groupDataNum*(this.groupNum-1))+ 1,
                      end ,
                     maxGroupNum = Math.ceil(this.maxPageNum/this.groupDataNum);
                 if(this.maxPageNum%this.groupDataNum!=0&&this.groupNum==maxGroupNum){
                     end = this.groupDataNum*(this.groupNum-1)+this.maxPageNum%this.groupDataNum
                 }else{
                     end = this.groupDataNum*(this.groupNum);
                 }

                 for(var j = begin;j <= end ;j++){
                     var oA = $("<a/>");
                     oA.attr("href","#"+j);
                     if(this.currentPageNum == j){
                         oA.attr("class","current");
                     }
                     oA.html(j);
                     $td.append(oA);
                 }
             }
        }
        //下一页
        if( (this.maxPageNum - this.currentPageNum) >= 1 ){
            var oA = $("<a/>");
            oA.attr("href","#" + (this.currentPageNum + 1));
            oA.html("下一页");
            $td.append(oA);
        }
        //尾页
        var oA = $("<a/>");
        oA.attr("href","#" + this.maxPageNum);
        oA.html("尾页");
        $td.append(oA);

        var page_a = $td.find('a');
        var tempThis = this;

        page_a.unbind("click").bind("click",function(){
            var nowNum =  parseInt($(this).attr('href').substring(1));

            if(nowNum>tempThis.currentPageNum){//下一组
                if(tempThis.currentPageNum%tempThis.groupDataNum==0){
                    tempThis.groupNum += 1;

                    var maxGroupNum = Math.ceil(tempThis.maxPageNum/tempThis.groupDataNum);
                    if(tempThis.groupNum>=maxGroupNum){
                        tempThis.groupNum = maxGroupNum;
                    }
                }
            }
            if(nowNum<tempThis.currentPageNum){//上一组
                if((tempThis.currentPageNum-1)%tempThis.groupDataNum==0){
                    tempThis.groupNum -= 1;
                    if(tempThis.groupNum<=1){
                        tempThis.groupNum = 1;
                    }
                }
            }
            if(nowNum==tempThis.maxPageNum){//直接点击尾页
                var maxGroupNum = Math.ceil(tempThis.maxPageNum/tempThis.groupDataNum);
                tempThis.groupNum = maxGroupNum;
            }
            if(nowNum==1){
                var maxGroupNum = Math.ceil(tempThis.maxPageNum/tempThis.groupDataNum);
                tempThis.groupNum = 1;
            }
            tempThis.currentPageNum = nowNum;


            tempThis.init((tempThis.currentPageNum-1)*tempThis.displayNum,
                tempThis.currentPageNum*tempThis.displayNum);
            return false;
        });
    }
    //初始化
    this.init = function(begin,end){
        this.header = options.headers;
        this.colNum = this.header.length;
        this.content = options.data;
        this.allDataNum = this.content.length;
        if(options.displayNum){
            this.displayNum = options.displayNum;
        }
        if(options.groupDataNum){
            this.groupDataNum = options.groupDataNum;
        }
        this.clearTable();
        this.showHeader();
        this.showContent(begin,end);
        this.showFoot();
    }

    this.init(0,options.displayNum);
}

  

调用方式

 

<script type="text/javascript">
    var data = [];
    for(var i=0;i<334;i++){
        data[i] = {id:i+1,name:"jason"+(i+1),gender:"男",age:26,address:"成都"};
    }
    var cs = new table({
        "tableId":"cs_table",    //必须
        "headers":["序号","姓名","性别","年龄","地址"],   //必须
        "data":data,        //必须
        "displayNum": 6,    //必须   默认 10
       "groupDataNum":9  //可选    默认 10
});
</script>

 

 

 

 

 

 

分享到:
评论

相关推荐

    jQuery不刷新分页动态数据表格代码.rar

    jQuery不刷新分页动态数据表格代码.rar jQuery不刷新分页动态数据表格代码.rar jQuery不刷新分页动态数据表格代码.rar jQuery不刷新分页动态数据表格代码.rar jQuery不刷新分页动态数据表格代码.rar jQuery不刷新...

    jquery 无刷新分页排序

    **jQuery无刷新分页排序**是一种高效的网页交互技术,它结合了Ajax和jQuery库的优势,为用户提供了流畅的浏览体验,无需每次操作都重新加载整个页面。这种技术在大数据量的展示场景中尤为常见,如在线表格、论坛、...

    jQuery表格插件无刷新表格控制分页显示数据

    本教程将详细讲解如何利用jQuery实现一个无刷新表格插件,以便于在网页中控制分页显示数据,提高用户体验。 首先,理解"无刷新"的概念至关重要。传统的网页操作,如点击分页按钮,通常会触发页面整体刷新,这可能...

    jQuery不刷新分页动态数据表格代码.zip

    总结来说,“jQuery不刷新分页动态数据表格代码”利用jQuery的事件处理和Ajax功能,结合分页插件,实现了高效、流畅的网页数据表格分页效果。开发者可以借鉴此代码,根据自己的项目需求进行定制,提升网页应用的交互...

    JqueryGrid 无刷新分页

    "JqueryGrid 无刷新分页"指的是利用jQueryGrid实现的页面内容不更新的情况下进行数据分页的技术。这种方法可以提高用户体验,因为用户在浏览大量数据时无需等待整个页面重新加载,只需点击分页按钮即可获取新的数据...

    jquery动态表格自定义分页.zip

    综上所述,这个项目展示了如何使用jQuery、CSS和Ajax技术实现一个动态表格分页功能,允许用户在不刷新页面的情况下浏览大量数据,同时提供了自定义的分页样式。通过学习这些技术,开发者可以提高网页的用户体验和...

    JQuery 无刷新分页

    **jQuery 无刷新分页与排序** 在网页开发中,用户界面的响应速度和用户体验是至关重要的。传统的分页方式通常需要用户点击分页按钮后,页面重新加载以显示新的内容,这可能导致页面跳转的延迟,降低用户体验。为了...

    jQuery动态表格数据分页检索排序代码

    这个项目“jQuery动态表格数据分页检索排序代码”提供了一个纯前端实现的解决方案,无需服务器端的支持,使得用户可以更加便捷地浏览和管理大量数据。 jQuery是一个流行的JavaScript库,它简化了DOM操作、事件处理...

    JqueryAjaxPage 基本java jquery无刷新数据库分页

    总结一下,`JqueryAjaxPage` 是一个结合了 Java 后端处理和 jQuery 前端交互的分页解决方案,实现了无刷新加载数据库数据。通过 Ajax 技术,它可以高效地展示大量数据,提高用户体验。实际使用时,开发者需要理解并...

    Asp.net+Sql+ashx实现 jquery无刷新分页

    在实现无刷新分页时,我们可以利用jQuery的Ajax方法向服务器发送异步请求,获取新的分页数据,然后动态更新页面上的表格或列表,从而达到无刷新的效果。具体步骤如下: 1. 用户点击分页按钮。 2. jQuery监听到事件...

    jquery无刷新分页.排序

    本文将深入探讨如何使用jQuery实现无刷新分页和排序。 一、无刷新分页(Ajax分页) 无刷新分页,也称为Ajax分页,其核心思想是通过Ajax技术异步获取数据,而不是整个页面进行刷新。这样可以避免用户在浏览大量数据...

    jQuery动态表格数据分页插件

    本文将深入探讨“jQuery动态表格数据分页插件”,这款插件能够帮助开发者轻松实现动态表格数据的分页显示,同时支持自定义设置分页参数,以提高网页的性能和用户交互性。 首先,jQuery是一个广泛使用的JavaScript库...

    jquery 无刷新分页查询

    本文将深入探讨如何使用jQuery实现无刷新分页查询。 首先,理解基本概念:无刷新分页的核心在于利用Ajax技术。Ajax(异步JavaScript和XML)允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分网页...

    .net写的3层架构的无刷新表格分页例子(ajax+jquery+json)

    《.NET实现的3层架构无刷新表格分页——AJAX+jQuery+JSON技术解析》 在现代Web应用中,用户界面的响应速度和用户体验至关重要。.NET框架为我们提供了强大的开发工具,配合AJAX、jQuery和JSON技术,可以构建出高效、...

    jQuery json动态数据表格分页代码

    这个主题"jQuery json动态数据表格分页代码"聚焦于使用jQuery、PHP和AJAX来实现这一功能。以下是相关知识点的详细说明: 1. **jQuery**:jQuery是一个流行的JavaScript库,它简化了HTML文档遍历、事件处理、动画和...

    jquery分页,无刷新,AJAX,排序,分页,查找

    本篇文章将详细讲解如何利用jQuery实现无刷新分页、AJAX数据加载、排序以及查找功能。 一、jQuery分页 jQuery分页功能允许用户在大量数据中轻松浏览,无需每次加载整个页面。它通过创建一系列链接或按钮来表示不同...

    jQuery客户端表格分页显示

    jQuery作为一款广泛使用的JavaScript库,提供了丰富的功能,包括处理DOM操作、事件处理、动画效果等,同时也适用于客户端表格分页显示,极大地提高了用户体验,避免了频繁的服务器请求,实现了无刷新分页。...

    jQuery无刷新分页查找实例.zip

    【jQuery无刷新分页查找实例】是一个利用JavaScript库jQuery、前端框架AngularJS和设计工具Bootstrap构建的高效网页应用示例。这个实例展示了如何在不重新加载整个页面的情况下实现动态分页和搜索功能,极大地提升了...

    jquery+json 无刷新分页

    **jQuery + JSON 无刷新分页技术详解** 在现代网页应用中,用户界面的响应速度和用户体验至关重要。无刷新分页技术就是一种提高用户交互体验的方法,它允许用户在不重新加载整个页面的情况下查看不同页面的数据。本...

    jquery表格插件带分页动态数据表格代码

    在这个“jquery表格插件带分页动态数据表格代码”项目中,我们重点探讨的是如何利用jQuery实现一个功能丰富的表格,包括数据分页和动态加载。 一、jQuery表格插件 表格插件通常是基于jQuery构建的,用于增强HTML...

Global site tag (gtag.js) - Google Analytics