jQuery实现的表格前端排序功能示例
程序员文章站
2022-11-25 08:32:06
本文实例讲述了jquery实现的表格前端排序功能。分享给大家供大家参考,具体如下:
表格前端按列排序
依赖jquery(本例使用jquery-1.8.2)
1.初始化...
本文实例讲述了jquery实现的表格前端排序功能。分享给大家供大家参考,具体如下:
表格前端按列排序
依赖jquery(本例使用jquery-1.8.2)
1.初始化方法
(function($){ //插件 $.extend($,{ //命名空间 sorttable:{ sort:function(tableid,idx){ var table = document.getelementbyid(tableid); var tbody = table.tbodies[0]; var tr = tbody.rows; var trvalue = new array(); for (var i=0; i<tr.length; i++ ) { trvalue[i] = tr[i]; //将表格中各行的信息存储在新建的数组中 } if (tbody.sortcol == idx) { trvalue.reverse(); //如果该列已经进行排序过了,则直接对其反序排列 } else { trvalue.sort(function(tr1, tr2){ var value1 = tr1.cells[idx].innertext; //列 var value2 = tr2.cells[idx].innertext; //第二列 value1 = value1.replace("%",""); //把有%的取消掉 value1=value1.trim(); //去空格 console.log(typeof(value1)); if(isnan(value1)){ var index1 = value1.indexof("分"); var index2 = value2.indexof("分"); if(index1>0){ var num1 =value1.substring(0,index1); var num2 =value1.substring(index1+1,value1.length-1); var num3 =value2.substring(0,index2); var num4 =value2.substring(index2+1,value2.length-1); if(parsefloat(num1)>parsefloat(num3)){ return 1; } if(parsefloat(num1)<parsefloat(num3)){ return -1; } if(parsefloat(num1)==parsefloat(num3)){ return parsefloat(num2)-parsefloat(num4) } }else{ var a = tr1.cells[idx].textcontent; var b= tr2.cells[idx].textcontent; return a.localecompare(b); } }else{ return parsefloat(value1)-parsefloat(value2); } }); } var fragment = document.createdocumentfragment(); //新建一个代码片段,用于保存排序后的结果 //var index = 0; var arrtotal =new array(); for (var i=0; i<trvalue.length; i++ ) { var c = trvalue[i].cells[0].innerhtml; //console.log(c); if(c.trim().indexof("汇总")!=-1){//汇总行总是排在表格最上面 // index = i; arrtotal.push(i); }else{ fragment.appendchild(trvalue[i]); } } if(arrtotal.length>0){ for(var k=arrtotal.length; k<0; k-- ){ tbody.appendchild(trvalue[arrtotal[k]]); } } //tbody.appendchild(trvalue[index]); tbody.appendchild(fragment); //将排序的结果替换掉之前的值 tbody.sortcol = idx; } } }); })(jquery);
2.页面函数
function desc_change(id,str){ $("#desc_1").html("日期"); $("#desc_2").html("id"); $("#desc_3").html("类别"); $("#"+id).html(str); } function desc(id,str){ var htmlstr =$("#"+id).text().trim(); var c =str; if(htmlstr==str){ c=str+'↓'; $("#"+id).html(c); }else if(htmlstr==str+'↓'){ c=str+'↑' $("#"+id).html(c); }else if(htmlstr==str+'↑'){ c=str+'↓' $("#"+id).html(c); } desc_change(id,c) }
3.dom结构
<table id="tablesort"> <thead> <tr> <th onclick="$.sorttable.sort('tablesort',0);desc('desc_1','日期')" ><a id="desc_1" >日期</a></th> <th onclick="$.sorttable.sort('tablesort',1);desc('desc_2','软件id')" ><a id="desc_2" >id</a></th> <th onclick="$.sorttable.sort('tablesort',2);desc('desc_x','渠道id')" ><a id="desc_3" >类别</a></th> </tr> </thead> <tbody> <tr> <td>201870601</td> <td>汇总</td> <td>新闻</td> </tr> </tbody> </table>
更多关于jquery相关内容感兴趣的读者可查看本站专题:《jquery表格(table)操作技巧汇总》、《jquery切换特效与技巧总结》、《jquery扩展技巧总结》、《jquery常用插件及用法总结》、《jquery常见经典特效汇总》及《jquery选择器用法总结》
希望本文所述对大家jquery程序设计有所帮助。