在表格中,有时候需要排序的功能。网上用的多的是tablesorter。那么就用tablesorter吧。然后,就开始做了。然后,就会有一个有一个的问题。

1,tablesorter有官网没,有文档没,怎么下,怎么用。

2,我想要table的第一列不参与排序。或某一列几列才参与排序。

3,我想要table的最后一行不参与排序或某一行不参与排序。

4,tablesorter的默认样式太丑了。而表示降序升序的三角图标还蛮好看的。我只想要这个图标,不要其他的又该如何。

5,tablesorter的常见排序规则。

6,tablesorter是否可以自定义排序方式。

7,tablesorter是否可以多列排序。就是多列与。

8,table动态更新,或翻页。

那么,就围绕上边的问题一个一个的来解决。


可以去这里 http://plugins.jquery.com/tablesorter/https://github.com/Mottie/tablesorter下载。文档这里有https://mottie.github.io/tablesorter/docs/
可以初步看下demo。然后去bootcss里找到tablesorter的cdn。就是 http://www.bootcdn.cn/jquery.tablesorter/

看着demo,按照demo的格式,套一套自己的table就可以功能实现了。记得初始化一下。

$("#mytable").tablesorter();

table的列是否参与排序可以使用:

$("#mytable").tablesorter({headers:{0:{sorter:false}}});

如果想第几列不参与排序,就修改headers里边的index对应的值为false。

table的最后一行不参与排序。可以新建一个tfoot标签,将tr,td,th啥的包含进来。就可以脱离tbody的排序。

为了快速的尝试下效果,你可以用cdn的js以及css。你会发现table页面比较丑,没有自己定义的好看。于是,你就不想用它的样式。那么,可以通过审查元素,查看对比th的样式规律,可以找到了定义th三角等样式的地方。定义了三种状态的样式。未排序,降序,升序。于是把这几个类独自抽出来就可以了。这样就不会坏了心情。

            .table>thead>tr .tablesorter-headerUnSorted:not(:first-child)
            {
                background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==);
                background-position: center right;
                background-repeat: no-repeat;
                cursor: pointer;
                white-space: normal;
                padding: 4px 20px 4px 4px;
            }    
            
            .table>thead>tr .tablesorter-headerAsc:not(:first-child)
            {
                background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7);
                background-repeat: no-repeat;    
                background-position: center right;
                cursor: pointer;
                white-space: normal;
            }
            
            .table>thead>tr .tablesorter-headerDesc:not(:first-child)
            {
                background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7);
                background-repeat: no-repeat;
                background-position: center right;
                cursor: pointer;
                white-space: normal;
            }

tablesorter的排序规则值有”false”,”text”,”digit”,”integer”,”double”这些。

可以通过addParser的format方式来自定义排序顺序。比如青年,中年,老年。在没有具体年龄的情况下,可以通过自定义函数来排序。

$('.tablesorter').addParser({
id: "grade", //指定一个唯一的ID
is: function(s){
   return false;
},
format: function(s){
   return s.toLowerCase().replace(/少/,1).replace(/青/,2).replace(/中/,3).replace(/老/,4); //将中文换成数字
},
type: "numeric" //按数值排序
});

$("#mytable").tablesorter({headers:{4:{sorter:"grade"},5:{sorter:false}}}); //将第四列(年龄等级)按前面定义的grade方式排序

也可以多列同时进行排序。

table动态更新,或翻页后。如果再通过初始化的方式来处理表格,会告诉你已经初始化了。这个时候可以通过update的方式来完成。

具体细节看看下边几篇文章,几乎就可以搞定了。

http://www.cnblogs.com/dwnblogs/archive/2013/02/06/2900784.html

http://blog.csdn.net/shanhuhau/article/details/45718211

https://my.oschina.net/u/1421430/blog/192885

http://www.jb51.net/article/50394.htm

http://wenku.baidu.com/link?url=cAZHEFxMpaC-BrugXJc_RCPuam_dDGHr369dw25EOGam0AFGoDUbhTCkdnmczCO6FbA_6MZhdiS8YWCD2LOmCBnXmQPWHxfQCtjVgs6UCSS