jQuery插件之表格排序(转后完善)

有时间可以研究下这个插件,比较复杂! 表格排序jquery插件地址http://tablesorter.com/docs/


转作者的代码后进行了修改与优化!修复隐藏列排序的BUG!

对html表格进行排序的一个JQ插件

js代码如下:

/**
 * 对表格进行排序
 * @author yxd
 * @version 1.0
 * @argument 待排序的table的id和图片的路径
 * 用法:
 *    1、导入jquery-1.4.2.js
 *    2、导入sorttable.js
 *    3、在页面的onload中调用jQuery.sortTable({tableId:"tableId",imgPath:""});
 *    4、需要两个图片,路径:icon_comn_sortdown.gif和icon_comn_sortup.gif
 *    5、对于不需要排序的列,用class="noSort"标记
 * 注意:要求待排序的表格具有thead和tbody   
 */
jQuery.extend({
  sortTable:
  function(args){
      var $=jQuery,
       table=$("#"+args.tableId),
       allTr=$("tbody > tr",table).get(),
       img=$("<image src='' style='margin-left:5'/>"),
       tHead=$("thead > tr >th",table).not($(".noSort"));
   if(tHead.length==0){
    tHead=$("thead > tr >td",table).not($(".noSort"));
   }

   tHead.each(function(){
    $(this).data("dir",1)//排序的方向
        .data("index",$(this).prevAll("td:visible").length)//计算每一列的绝对列
           .css("cursor","pointer")
        .attr("title","单击排序")
        .click(function(){
       _$this=$(this);
       allTr.sort(function(a,b){
        var td1=$(a).children("td").eq(_$this.data("index")).text();
        td1=isNaN(Number(td1))?td1:Number(td1);    
        var td2=$(b).children("td").eq(_$this.data("index")).text();
        td2=isNaN(Number(td2))?td2:Number(td2);   
        var dir=_$this.data("dir");
        if(td1>td2){
         return dir;
        }else if(td1<td2){
         return -dir;
        }else{
         return 0;
        }
       });
       $(this).data("dir",-$(this).data("dir"));
       $(allTr).each(function(){
        $("tbody",table).append($(this));
       });        ;
       $(this).append(img.attr("src",args.imgPath+($(this).data("dir")==1?"icon_comn_sortdown":"icon_comn_sortup")+".gif"));
        });
   });
  }
 });

 

 

示例的html代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title> new document </title>
  <meta name="generator" content="editplus" />
  <meta name="author" content="" />
  <meta name="keywords" content="" />
  <meta name="description" content="" />
  <script type="text/javascript" src="jquery-1.3.2.js"></script>
  <script type="text/javascript" src="sorttable.js"></script>
  <script type="text/javascript">
  <!--
   jQuery(function($){
  $.sortTable({tableId:"t1",imgPath:"image/"});
   });
  //-->
  </script>
 </head>

 <body>
 <table id="t1" border="1">
     <thead id="thead">
   <tr>
    <td class="noSort">姓名</td>
    <td>年龄</td>
    <td>城市</td>
   </tr>
  </thead>
  <tbody id="tbody">
   <tr>
    <td>aa</td>
    <td>25</td>
    <td>luoyang</td>
   </tr>
   <tr>
    <td>bb</td>
    <td>23</td>
    <td>yuncheng</td>
   </tr>
   <tr>
    <td>cc</td>
    <td>10</td>
    <td>luoyang</td>
   </tr>
   <tr>
    <td>dd</td>
    <td>45</td>
    <td>henan</td>
   </tr>
   <tr>
    <td>dd</td>
    <td>8</td>
    <td>henan</td>
   </tr>
        </tbody>
 </table>
 
 </body>
</html>


 


 

使用效果如下图:



转自:http://blog.csdn.net/xiaobaoxiaodun/article/details/6918960

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值