jquery表单排序

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

<script type="text/javascript" src="jquery-1.5.1.min.js"></script>

<script type="text/javascript"> $(function(){  //存入点击列的每一个TD的内容;

 var aTdCont = []; 

 //点击列的索引值

 var thi = 0  

 //重新对TR进行排序

 var setTrIndex = function(tdIndex){

  for(i=0;i<aTdCont.length;i++){  

  var trCont = aTdCont[i];

   $("tbody tr").each(function() {    

 var thisText = $(this).children("td:eq("+tdIndex+")").text();

    if(thisText == trCont){     

 $("tbody").append($(this));    

 }    

    });  

  }

 }  

 //比较函数的参数函数

 var compare_down = function(a,b){    return a-b;  }  

 var compare_up = function(a,b){    return b-a;  }

   //比较函数  

var fSort = function(compare){   aTdCont.sort(compare);  }

   //取出TD的值,并存入数组,取出前二个TD值;

 var fSetTdCont = function(thIndex){    

$("tbody tr").each(function() {   

  var tdCont = $(this).children("td:eq("+thIndex+")").text();

                aTdCont.push(tdCont);    

         });

 }  

//点击时需要执行的函数

 var clickFun = function(thindex){  

 aTdCont = [];   

//获取点击当前列的索引值   

var nThCount = thindex;

  //调用sortTh函数 取出要比较的数据

  fSetTdCont(nThCount);  }  

 //点击事件绑定函数  

$("th").toggle(function(){  

 thi= $(this).index();   

clickFun(thi);  

 //调用比较函数,降序   fSort(compare_up);

  //重新排序行   

setTrIndex(thi);  },function(){   clickFun(thi);

  //调用比较函数 升序  

 fSort(compare_down);  

 //重新排序行   

setTrIndex(thi);

 }) 

})

</script>

<style type="text/css">

*{ margin:0px; padding:0px;}

table{  border-collapse:collapse;}  

table td{  border:1px solid #036;  text-align:center;  }

thead tr th{  cursor:pointer;  background:#066;  color:#FFFFFF;  }

  thead tr th:hover{  background:#369;}

</style>

</head>

<body>

<table class="tabSort" width="546" height="300" border="0" align="center" cellpadding="0" cellspacing="0">

<thead>  

 <tr>     

<th scope="col">名称</th>  

   <th scope="col">价格</th>    

  <th scope="col">地址</th>     

<th scope="col">备注</th>     

<th scope="col">时间</th>    

</tr>  

</thead>

<tbody>    

<tr>     

<td>商品1</td>  

   <td>10.5</td>

     <td>&nbsp;</td>

     <td>&nbsp;</td>     

<td>&nbsp;</td>  

 </tr>    

<tr>     

<td>商品2</td>  

   <td>11.3</td>    

  <td>&nbsp;</td>  

   <td>&nbsp;</td>  

   <td>&nbsp;</td>  

 </tr>  

 <tr>    

  <td>商品3</td>  

   <td>9.8</td>     

<td>&nbsp;</td>     

<td>&nbsp;</td>  

   <td>&nbsp;</td>  

 </tr>  

 <tr>    

  <td>商品4</td>  

   <td>12.6</td>  

   <td>&nbsp;</td>

     <td>&nbsp;</td>  

   <td>&nbsp;</td>  

 </tr>    

<tr>     

<td>商品5</td>    

  <td>13.9</td>  

   <td>&nbsp;</td>

     <td>&nbsp;</td>

     <td>&nbsp;</td>    

</tr>    

<tr>     

<td>商品6</td>     

<td>18</td>  

   <td>&nbsp;</td>  

   <td>&nbsp;</td>  

   <td>&nbsp;</td>    

</tr>  

 <tr>  

   <td>商品7</td>

     <td>21.3</td>

     <td>&nbsp;</td>

     <td>&nbsp;</td>  

   <td>&nbsp;</td>

   </tr>

   <tr>     

<td>商品8</td>

     <td>6.5</td>    

  <td>&nbsp;</td>

     <td>&nbsp;</td>  

   <td>&nbsp;</td>  

 </tr>  

 <tr>     

<td>商品9</td>

     <td>7.4</td>  

   <td>&nbsp;</td>

     <td>&nbsp;</td>

     <td>&nbsp;</td>    

</tr>  

</tbody>

</table>

</body>

</html>

 

主要思路:
  因为JS有SORT的方法,对数组进行排序,那么通过个方法,我们就会想到数组了。
  1.点标表格标头的时候,取出点击的是那一列。即列的索引值。因为下面要进行排序的就是该列。所以我要知道是点的那一列。
  2.对表格的数据部分,也就是tbody部分,进行点击的列的取值,把这些值存入到一个数组当中。
  3.将存入数据的数组,通过SORT方法进行排序。(这里写了两种,升,或降,因为是点击时要切换排序的方式。第一次降,第二次升,第三降,第四升,依次进行)
  4.将排序好的数组的值进行遍历,在遍历过程中,和每一行TR的点击列的那个TD当中的数据进行一个比较。如果相等,就插入到tbody的最后去.(最先插入的,将是在第一行。)

posted @ 2013-07-26 12:47  心飞翔,光阴已逝  阅读(272)  评论(0)    收藏  举报