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>[email protected]</td>
    <td>$50.00</td>
    <td>http://www.jsmith.com</td>
</tr>
<tr>
    <td>Bach</td>
    <td>Frank</td>
    <td>[email protected]</td>
    <td>$50.00</td>
    <td>http://www.frank.com</td>
</tr>
<tr>
    <td>Doe</td>
    <td>Jason</td>
    <td>[email protected]</td>
    <td>$100.00</td>
    <td>http://www.jdoe.com</td>
</tr>
<tr>
    <td>Conway</td>
    <td>Tim</td>
    <td>[email protected]</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 下载

  

时间: 2024-10-25 13:24:35

jquery.tablesorter.js 学习笔记的相关文章

【转】Backbone.js学习笔记(二)细说MVC

文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Backbone源码结构 1: (function() { 2: Backbone.Events // 自定义事件 3: Backbone.Model // 模型构造函数和原型扩展 4: Backbone.Collection // 集合构造函数和原型扩展 5: Backbone.Router // 路由

sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)

sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map) 这几天学习和查看了jQuery和Property这两个很流行的前端库的御用选择器组件Sizzle.js的源代码,收获还是相对多的!之前一直做使用Java语言开发,其丰富的组件类库使得开发效率那叫一个快呀!突然转来做JavaScript一时间还有点儿不适应(快半年了),不过自从看见那么多漂亮的网站和对JavaScript接触的越来越多,也发现了其中的一些乐趣.正如自己一直坚信的那样,编程语言仅仅是工具,重要的是编程思想!使用Jav

jQuery源码学习笔记:扩展工具函数

// 扩展工具函数 jQuery.extend({ // http://www.w3school.com.cn/jquery/core_noconflict.asp // 释放$的 jQuery 控制权 // 许多 JavaScript 库使用 $ 作为函数或变量名,jQuery 也一样. // 在 jQuery 中,$ 仅仅是 jQuery 的别名,因此即使不使用 $ 也能保证所有功能性. // 假如我们需要使用 jQuery 之外的另一 JavaScript 库,我们可以通过调用 $.noC

JS学习笔记-事件绑定

一.传统事件模型 传统事件模型中存在局限性. 内联模型以HTML标签属性的形式使用,与HTML混写,这种方式无疑造成了修改以及扩展的问题,已经很少使用了. 脚本模型是将事件处理函数写到js文件中,从页面获取元素进行对应事件函数的绑定以触发执行.但也存在不足之处: 1.一个事件绑定多个事件监听函数,后者将覆盖前者. 2.需要限制重复绑定的情况 3.标准化event对象 二.现代事件绑定 DOM2级事件定义了两个方法用于添加.删除事件:addEventListener().removeEventLi

jQuery源码学习笔记五 六 七 八 转

jQuery源码学习笔记五 六 七 八 转 Js代码   <p>在正式深入jQuery的核心功能选择器之前,还有一些方法,基本都是数组方法,用于遴选更具体的需求,如获得某个元素的所有祖选元素啦,等等.接着是其缓存机制data.</p> <pre class="brush:javascript;gutter:false;toolbar:false"> //@author  司徒正美|なさみ|cheng http://www.cnblogs.com/ru

Vue.js学习笔记:在元素 和 template 中使用 v-if 指令

f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <script src="https://cdn.bootcss.com/vue/2.2.

[Pro Angular.JS]学习笔记1.1:设置开发环境

可以使用yeoman.io,很方便.我已经写了一篇随笔,介绍如何使用.这里也有一篇介绍的文章:http://www.cnblogs.com/JoannaQ/p/3756281.html 代码编辑器,在Mac下用了一下WebStorm,太恶心了.另外发现书的作者使用的开发环境是Windows + VS Express 2013,为了方便学习,我也使用VS Express 2013 Update2.VS2013用起来蛮舒服的,把WebStorm比得跟驼屎一样.也许是因为我没用习惯吧. 1.安装Nod

Angular JS 学习笔记

特定领域语言 编译器:遍历DOM来查找和它相关的属性, 分为编译和链接两个阶段, 指令:当关联的HTML结构进入编译阶段时应该执行的操作,可以写在名称里,属性里,css类名里:本质上是函数 稳定的DOM:绑定了数据模型的DOM元素的实例不会在绑定的生命周期发生改变 作用域:用来检测模型的改变和为表达式提供执行上下文的 AngularJS 和其它模板系统不同,它使用的是DOM而不是字符串 指令: 由某个属性.元素名称.css类名出现而导致的行为,或者说是DOM的变化 Filter过滤器:扮演着数据

Node.js学习笔记(3) - 简单的curd

这个算是不算完结的完结吧,前段时间也是看了好久的Node相关的东西,总想着去整理一下,可是当时也没有时间: 现在看来在整理的话,就有些混乱,自己也懒了,就没在整理,只是简单的记录一下 一.demo的简单介绍 这次demo,只涉及到简单的curd操作,用到的数据库是mongo,所以要安装mongo数据库,数据库连接驱动是mongoose: 当然关于mongo的驱动有很多,比如mongous mongoskin等:(详见http://cnodejs.org/topic/4f4ca8e0940ce2e