재우니의 블로그

jQuery 를 이용해서 미정렬된 options 값들을 정렬된 상태로 보여지도록 구현하는것을 알아보고자 한다.


 <select name="DDL" id="DDL">
 <option value="3">Item3</option>
 <option value="1">Item1</option>
 <option value="4">Item4</option>
 <option value="5">Item5</option>
 <option value="2">Item2</option> 
</select>

<input type="submit" name="btnSort" value="Sort" id="btnSort" />




    <script src='../Scripts/jquery-1.3.2.min.js'  type='text/javascript'>
    </script>
 
    <script type="text/javascript">
        $(function() {
            $('input[id$=btnSort]').click(function(e) {
                e.preventDefault();
                var sortedDdl = $.makeArray($('select[id$=DDL] option'))
                                       .sort(function(o, n) {
                                       return $(o).text() < $(n).text() ? -1 : 1;
                });
                $("select[id$=DDL]").html(sortedDdl).val("1");
                $("#para").html("Items were Sorted!");
                $(this).attr("disabled", "disabled");
            });
        });
    </script>

$.makeArray 를 이용해서 배열로 convert 했으며, sort() 함수를 이용하여 배열을 정렬시킨다.

$("select[id$=DDL]").empty().html(sorted)

DropDownList 에 내용을 empty 하고, 현재 존재한 options 값들을 정렬된 options 로 치환하도록 .html(sorted) 하였다.

 val("1") 의미는 정렬되고 나서, 첫번째 options 가 선택되도록 조치한 것이다.