jQuery | javascript | CSS

83.jQuery - TableSorting (정렬) (13.Sample )

Godffs 2009. 11. 18. 11:40
반응형
테이블 해더 클릭시 해당 열 정렬하는 예제입니다.

04.TableSorting.htm

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <title>테이블의 헤더 클릭시 해당 정렬</title>

    <style type="text/css">

        .odd{ background-color:Silver; }

        .even{ background-color:Aqua; }

    </style>

   

    <script src="../../jQuery/jquery-1.3.2-vsdoc2.js" type="text/javascript"></script>

    <script type="text/javascript">

        //[!] 배경색 변경을 jQuery 플러그인으로 업그레이드 하자.

        $.fn.alternateRowColors = function() {

            $('tbody tr:odd', this).removeClass('even').addClass('odd');

            $('tbody tr:even', this).removeClass('odd').addClass('even');

            return this;

        };

        $(document).ready(function() {

            $('table.tbl').each(function() {

                var $table = $(this);

                //플러그인 호출

                $table.alternateRowColors();

 

                //참고용 소스이다.

                //테이블 헤더 정렬 : start table sort

                $('th', $table).each(function(column) {

                    //해더의 CSS클래스가 sort-alpha 설정되어있다면, ABC순으로 정렬

                    if ($(this).is('.sort-alpha')) {

                        var direction = -1;

                        //클릭시 정렬 실행 : 토글링으로 변경

                        $(this).click(function() {

                        direction = -direction;

                        var rows = $table.find('tbody > tr').get(); //현재 선택된 헤더관련 가져오기

                            //자바스크립트의 sort 함수를 사용해서 오름차순 정렬

                            rows.sort(function(a, b) {

                                var keyA = $(a).children('td').eq(column).text().toUpperCase();

                                var keyB = $(b).children('td').eq(column).text().toUpperCase();

 

                                if (keyA < keyB) return -direction;

                                if (keyA > keyB) return direction;

                                return 0;

                            });

                            //정렬된 행을 테이블에 추가

                            $.each(rows, function(index, row) {

                                    $table.children('tbody').append(row) });

                            $table.alternateRowColors(); //재정렬

                        });

                    }

                }); //end table sort

            });

        });

    </script>

</head>

 

<body>

    <table class="tbl" border="1">

          <thead>

                   <tr>

                            <th>&nbsp;</th>

                            <th class="sort-alpha">제목</th> <!-- 제목 클릭 정렬 -->

                            <th>직업</th>

                            <th>이름</th>

                   </tr>

          </thead>

         

          <tbody align="center">

                   <tr>

                            <td><img src="../../images/j1.jpg" /></td>

                            <td>완전좋앙</td>

                            <td>배우</td>

                            <td>조선옥</td>

                   </tr>

                   <tr>

                            <td><img src="../../images/j2.jpg" /></td>

                            <td>최고임</td>

                            <td>배우</td>

                            <td>조선옥</td>

                   </tr>

                   <tr>

                            <td><img src="../../images/j3.jpg" /></td>

                            <td>이쁘다</td>

                            <td>배우</td>

                            <td>조선옥</td>

                   </tr>

          </tbody>

    </table>

</body>

</html>


결과화면

[그림83-1]



반응형