[Jquery] checkbox 컨트롤

실행화면

  • jquery를 이용해서 checkbox 컨트롤

CODE

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
    <script>
        var checkArr =[];

        var checkbox_click = function checkbox_click(checkbox) {
            if(checkbox.prop("checked"))
                checkArr.push(checkbox.val());
            else {
                for (var i = 0; i < checkArr.length; i++) {
                    if(checkArr[i] == checkbox.val())
                        checkArr.splice(i, 1);
                }
            }
            $("#text").html(checkArr);
        }
        var deselect = function deselect() {
            var len = checkArr.length;
            for(var i = 0 ; i < len ; i++) checkArr.pop();
            $("#text").html(checkArr);
        }
        var allSelect = function allSelect() {
            $("input[type='checkbox']").each(function () {
                if(!$(this).prop("checked"))
                    checkArr.push($(this).val());
            });
            $("#text").html(checkArr);
        }

        $(document).ready(function () {
            //checkbox이 변경될때 console에 log를 남긴다.
            $("input[type='checkbox']").on('change', function () {
                //console.log("sss");
               checkbox_click($(this));
            });
            // 모든 checkbox 선택
            $("#selectAll").on("click", function () {

                allSelect();
                $("input[type='checkbox']").prop('checked',true);

            });
            // 모든 checkbox 해제
            $("#Deselect").on("click", function () {
                deselect();
                $("input[type='checkbox']").prop('checked',false);
            });
        });
    </script>
</head>
<body>
<button id="selectAll">전체 선택</button><button id="Deselect">선택 해제</button> <br>
<div id="chkboxs"></div>
    <input type="checkbox" value="축구">축구 <br>
    <input type="checkbox" value="야구">야구 <br>
    <input type="checkbox" value="농구">농구 <br>
    <input type="checkbox" value="배구">배구 <br>
    <input type="checkbox" value="탁구">탁구 <br>
    <input type="checkbox" value="하키">하키 <br>

<textarea readonly rows="4"cols="60" id="text"></textarea>
</body>

</html>

어려웠던 점 (.attr() & .prop())

  • 위에 코드를 짜면서 고생했던 내용이 attr & prop 이다.

.attr()는 HTML 의 속성(Attribute)을 취급

.prop()는 JavaScript 의 속성(property) 를 취급

  • 라고 하는데 그냥 checked 처럼 태그 속성에 값이 존재 하지 않을때 .prop() 를 써야하만 한다.

  • 더 간단한 방법은 .attr() 대신에 .prop() 를 쓰면 된다.