相当混的排序 --tablesorter默认的居然是字符串排序

黄平俊 发布于 2009/03/31 17:36
阅读 1K+
收藏 0

事故发生在tablesorter 下的Basic 第四项 Sort table using a link outside the table
从外部进行调用排序

事故现场:

引入
<script type="text/javascript"  src="E:/eclipse3.4workspace/ketang/webapp/js/comm/jquery-1.3.min.js"></script>
<script type="text/javascript"  src="E:/eclipse3.4workspace/ketang/webapp/js/comm/jquery.tablesorter.min.js"></script>

简单的JS脚本:
function up(){  $("#sorttable").tablesorter({ sortList:[[0,1]]}); }
function down(){ $("#sorttable").tablesorter({sortList:[[0,0]]}); }

 <a href='#' onclick='up()'>向上</a> <a href='#' onclick='down()'>向下</a>
页面内容:
<table width="100%" border="0" cellpadding="0" id='sorttable' cellspacing="1" class="tableborder">
 <thead>
    <th>7</th>
 </thead>
 <tbody>
    <tr><td>0</td></tr>
    <tr><td>1</td></tr>
    <tr><td>5</td></tr>
    <tr><td>6</td></tr>
    <tr><td>0</td></tr>
    <tr><td>1</td></tr>
    <tr><td>30</td></tr>
    <tr><td>23</td></tr>
    <tr><td>7</td></tr>
    <tr><td>5</td></tr>
</tbody>
</table>
结果您会很意外的发现,并没有按想像中的大小来排序!

为什么呢?刚开始被其它JS和数据干扰,在排除万难后,从源码里发现,原来tablesorter的默认排序是'text'的

所以 7会排在30,23之前!

解决办法:自定义一个数据的转换表达式如下

 $.tablesorter.addParser({
        id: "fucknumber",
        is: function(s) {
            return true;
        },
        format: function(s) {
            return $.trim(s);
        },
        type: "numeric"
    });

此事故告诉我们:没源码,整死人不偿命!有源码,爱啥整啥整!

加载中
返回顶部
顶部