jQuery의 테이블 프런트 엔드 정렬 기능 구현에 대한 자세한 설명

小云云
풀어 주다: 2017-12-27 16:52:55
원래의
2034명이 탐색했습니다.

이 글은 주로 jQuery로 구현한 테이블 프론트엔드 정렬 기능을 소개하는데, 테이블 요소 획득, 순회, 이벤트 응답과 관련된 jQuery의 연산 기술이 필요한 친구들이 참고할 수 있기를 바랍니다.

이 문서의 예에서는 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+&#39;↓&#39;;
    $("#"+id).html(c);
  }else if(htmlstr==str+&#39;↓&#39;){
    c=str+&#39;↑&#39;
    $("#"+id).html(c);
  }else if(htmlstr==str+&#39;↑&#39;){
    c=str+&#39;↓&#39;
    $("#"+id).html(c);
  }
  desc_change(id,c)
}
로그인 후 복사

3.DOM 구조

<table id="tableSort">
    <thead>
    <tr>
        <th onclick="$.sortTable.sort(&#39;tableSort&#39;,0);desc(&#39;desc_1&#39;,&#39;日期&#39;)" ><a id="desc_1" >日期</a></th>
        <th onclick="$.sortTable.sort(&#39;tableSort&#39;,1);desc(&#39;desc_2&#39;,&#39;软件ID&#39;)" ><a id="desc_2" >ID</a></th>
      <th onclick="$.sortTable.sort(&#39;tableSort&#39;,2);desc(&#39;desc_x&#39;,&#39;渠道ID&#39;)" ><a id="desc_3" >类别</a></th>
    </tr>
    </thead>
    <tbody>
     <tr>
        <td>201870601</td>
        <td>汇总</td>
        <td>新闻</td>
     </tr>
    </tbody>
</table>
로그인 후 복사

관련 권장 사항:

테이블 새로 고침 없는 페이징을 구현하는 jquery

jQuery_jquery를 기반으로 테이블 데이터의 동적 추가 및 통계를 구현하는 코드

JQuery를 사용하여 인터레이스된 테이블 변색 및 코드를 구현하여 현재 라인을 강조 표시_jquery

위 내용은 jQuery의 테이블 프런트 엔드 정렬 기능 구현에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿