jquery.tablesorter.js 学习笔记

jquery.tablesorter.js

  一般情况下,表格数据的排序方式有两种,第一种是让后端服务将排序后的数据直接输出,另外一种方式就是使用客户端排序,而jquery.tablesorter.js可以满足此需求

实现效果图如下

  


1.官方地址
     jquery.tablesorter.js

 

2. HTML 结构

<table id="myTable" class="tablesorter"> 
<thead> 
<tr> 
    <th>Last Name</th> 
    <th>First Name</th> 
    <th>Email</th> 
    <th>Due</th> 
    <th>Web Site</th> 
</tr> 
</thead> 
<tbody> 
<tr> 
    <td>Smith</td> 
    <td>John</td> 
    <td>jsmith@gmail.com</td> 
    <td>$50.00</td> 
    <td>http://www.jsmith.com</td> 
</tr> 
<tr> 
    <td>Bach</td> 
    <td>Frank</td> 
    <td>fbach@yahoo.com</td> 
    <td>$50.00</td> 
    <td>http://www.frank.com</td> 
</tr> 
<tr> 
    <td>Doe</td> 
    <td>Jason</td> 
    <td>jdoe@hotmail.com</td> 
    <td>$100.00</td> 
    <td>http://www.jdoe.com</td> 
</tr> 
<tr> 
    <td>Conway</td> 
    <td>Tim</td> 
    <td>tconway@earthlink.net</td> 
    <td>$50.00</td> 
    <td>http://www.timconway.com</td> 
</tr> 
</tbody> 
</table> 

 

3. 需要引入的资源

<script type="text/javascript" src="/path/to/jquery-latest.js"></script> 
<script type="text/javascript" src="/path/to/jquery.tablesorter.js"></script> 

 

4. 使用demo

$(document).ready(function() 
   
    // demo1 : 初始化,使表格可排序 
    $("#myTable").tablesorter(); 

    // demo1 : 默认第一列,第二列按升序排序 
    $("#myTable").tablesorter( {sortList: [[0,0], [1,0]]} ); 


    // demo3 : 手动触发排序
    $("myTable").trigger("sorton",[[0,0],[2,0]]);

    // demo4 : 禁止列排序
    $("table").tablesorter({ 
        headers: { 
            // 列序号默认从0开始
            1: { 
                // 第二列不可排序 
                sorter: false 
            }, 
            2: { 
                sorter: false 
            } 
        } ,
        // 启用调试模式
        debug: true 
    }); 

    // demo5 : 强制默认排序列
    $("table").tablesorter({ 
        // set forced sort on the fourth column and i decending order. 
        sortForce: [[0,0]] 
    }); 

    // demo6 : 改变多条件排序使用的辅助键,默认shift
    $("table").tablesorter({ 
        sortMultiSortKey: 'altKey' ,
        textExtraction: function(node) { 
            // extract data from markup and return it  
            return node.childNodes[0].childNodes[0].innerHTML; 
        } 
    }); 


    // demo7 : 给table 添加元数据也可达到排序的目的,metadata插件会自动获取类属性
    <table cellspacing="1" class="tablesorter {sortlist: [[0,0],[4,0]]}"> 

    // demo8 : 也可以在th的class中指定排序
    <tr> 
        <th class="{sorter: false}">first name</th> 
        <th>last name</th> 
        <th>age</th> 
        <th>total</th> 
        <!-- 指定数据解析类型 -->
        <th class="{sorter: 'text'}">first name</th> 
        <th class="{sorter: false}">discount</th> 
        <th>date</th> 
    </tr> 

    // demo9 : 指定sort相关事件
    $("table").bind("sortStart",function() { 
        $("#overlay").show(); 
    }).bind("sortEnd",function() { 
        $("#overlay").hide(); 
    }); 

    // demo10 : 动态添加数据
    $("table tbody").append(html); 
    // 通知插件需要更新 
    $("table").trigger("update"); 
    var sorting = [[2,1],[0,0]]; 
    // 触发排序事件
    $("table").trigger("sorton",[sorting]); 

    // demo11 : 修改默认参数
    $.tablesorter.defaults.sortList = [[0,0]]; 

    // demo12 : 自定义排序类型
    $.tablesorter.addParser({ 
        // set a unique id 
        id: 'grades', 
        is: function(s) { 
            // return false so this parser is not auto detected 
            return false; 
        }, 
        format: function(s) { 
            // format your data for normalization 
            return s.toLowerCase().replace(/good/,2).replace(/medium/,1).replace(/bad/,0); 
        }, 
        // set type, either numeric or text 
        type: 'numeric' 
    }); 
     
    $(function() { 
        $("table").tablesorter({ 
            headers: { 
                6: { 
                    sorter:'grades' 
                } 
            } 
        }); 
    }); 


    // demo14 : 自定义组件
    $.tablesorter.addWidget({ 
        // give the widget a id 
        id: "repeatHeaders", 
        // format is called when the on init and when a sorting has finished 
        format: function(table) { 
            // cache and collect all TH headers 
            if(!this.headers) { 
                var h = this.headers = [];  
                $("thead th",table).each(function() { 
                    h.push( 
                        "" + $(this).text() + "" 
                    ); 
                     
                }); 
            } 
             
            // remove appended headers by classname. 
            $("tr.repated-header",table).remove(); 
             
            // loop all tr elements and insert a copy of the "headers"     
            for(var i=0; i < table.tBodies[0].rows.length; i++) { 
                // insert a copy of the table head every 10th row 
                if((i%5) == 4) { 
                    $("tbody tr:eq(" + i + ")",table).before( 
                        $("").html(this.headers.join("")) 
                     
                    );     
                } 
            } 
        } 
    }); 
     
    // demo15 : 调用插件call the tablesorter plugin and assign widgets with id "zebra" (Default widget in the core) and the newly created "repeatHeaders" 
    $("table").tablesorter({ 
        widgets: ['zebra','repeatHeaders'] 
    });         

); 

 

5. 注意事项

  依赖项:jquery

  meta数据插件:  jQuery Metadata 2.1

  分页插件:jQuery.tablesorter.pager.js

  css,image 在blue skin 文件夹中可以找到

  Demo 下载

  

 

posted @ 2015-11-26 19:57  *骑着蜗牛游世界*  阅读(6382)  评论(0编辑  收藏  举报