교육과정 기록/jQuery

jQuery 이벤트

춘식이왔엉 2022. 7. 1. 21:17

 

 

<a> , <form> 태그에 클릭 이벤트 적용 시, 기본 이벤트 차단하기

1. return false를 이용해 차단

$("a 또는 form").이벤트 메서드(function() {
   자바스크립트 코드;
   return false;
});

2. preventDefault() 메서드를 이용해 차단

$(".btn1").on("click", function (e) {   // 제이쿼리 이벤트 객체를 매개변수로 받음
   e.preventDefault();         // *** 이벤트의 기본동작을 중지시킴      

   $(".txt1").css( { backgroundColor: "#ff0"});
}) // onclick

 

mouseover() / mouseout() / hover()

    <script>
        $(() => {
            $(".btn1").on({
                "mouseover": function () {
                    $(".txt1").css( { backgroundColor: "yellow"});
                },
                "mouseout": function () {
                    $(".txt1").css( { backgroundColor: "none"});
                }
            }); // .on

            // 버튼2에 위의 2개의 이벤트를 합쳐놓은, hover() 메소드 사용
            $(".btn2").hover(
                function () {
                    $(".txt2").css({ backgroundColor: "aqua"});
                },
                function () {
                    $(".txt2").css({ backgroundColor: "none"});
                }
            );  // .hover
        });
    </script>

 

mouseout() 과 mouseleave() 의 차이

    <script>
        $(() => {
            $("#box_1").on("mouseout", function () {
                $("#box_1").css({ backgroundColor: "yellow"});
            }); // onmouseout

            $("#box_2").on("mouseleave", function () {
                $("#box_2").css({ backgroundColor: "pink"});
            }); // onmouseleave
        });
    </script>
    
    <style>
        div { border: 5px solid purple;}
    </style>
</head>

<body>
    <h1>mouseout</h1>
    <div id="box_1">
        <p><a href="#">내용1</a></p>
        <p><a href="#">내용2</a></p>
        <p><a href="#">내용3</a></p>
    </div>

    <h1>mouseleave</h1>
    <div id="box_2">
        <p><a href="#">내용4</a></p>
        <p><a href="#">내용5</a></p>
        <p><a href="#">내용6</a></p>
    </div>
</body>

 

mousemove()

   <script>
        $(() => {
            // document (즉, 브라우저의 viewport 영역)내에서 마우스가 움직일 때,
            // 제이쿼리 이벤트 객체를 통해 마우스의 좌표를 얻어낼 수 있음.
            $(document).on("mousemove", function (e) {
                $(".posX").text(e.pageX);
                $(".posY").text(e.pageY);
            });
        });
    </script>

</head>
<body>
    <h1>mousemove</h1>
    <p>X : <span class="posX">0</span></p>
    <p>Y : <span class="posY">0</span></p>
</body>

 

pageX , pageY / clientX , clientY

<script>
        $(() => {
            // document (즉, 브라우저의 viewport 영역)내에서 마우스가 움직일 때,
            // 제이쿼리 이벤트 객체를 통해 마우스의 좌표를 얻어낼 수 있음.
            $(document).on("mousemove", function (e) {

                // *pageX/Y : 스크롤바의 이동거리를 포함
                $(".posX").text(e.pageX);
                $(".posY").text(e.pageY);

                // *clientX/Y : 스크롤바의 이동거리를 무시
                // 항상 좌측상단의 꼭짓점을 원점으로 함 (화면 모니터를 기준으로 함)
                $(".clientX").text(e.clientX);
                $(".clientY").text(e.clientY);
            });
        });
    </script>

 

focus() / blur() 

            $("#user_id_1, #user_pw_1").on("focus", function () {
                $(this).css({ backgroundColor: "pink"});
            }); // onfocus

            $("#user_id_1, #user_pw_1").on("blur", function () {
                $(this).css({ backgroundColor: "white"});
            }); // onblur

 

 

그룹 이벤트 등록 메서드

 

on() / bind() 의 차이

- 둘 다 이벤트 대상 요소에 2개 이상의 이벤트를 등록.

But, 'on' 은 사용 방식에 따라 이벤트를 등록한 이후에도

동적으로 생성되거나 복제된 요소에도 이벤트가 적용됨

 

delegate()

- 선택한 요소의 하위 요소에 이벤트 등록.

- 이벤트를 등록한 이후에도 동적으로 생성되거나 복제된 요소에도 이벤트 적용

 

one() 

- 이벤트 대상 요소에 1개 이상의 이벤트를 등록. 

지정한 이벤트가 1회 발생하고 자동으로 해제됨

    <script>
        $(() => {
            // 미래시점에 '.btn_1.on' 요소노드가 출현하면, 
            // 두번째 인자값의 그룹이벤트와 세번째 이벤트 핸들러를 등록하라
            $(".btn_wrap").delegate(".btn_1.on", "mouseover focus", function () {
                alert("HELLO!");
            }); // .delegate

        $(".btn_1").addClass("on");  // 동적으로 class속성값으로 "on" 추가 

        // 동적인 요소에 등록한 이벤트를 1회성으로 처리하라!
        // 1. document 객체에 먼저 그룹이벤트를 등록시키고
        // 2. 미래시점에 두번째 인자값을 만족시키는 요소가 출현하면,
        // 3. 그 요소에 이벤트를 1회성으로 등록함
        $(document).one("mouseover focus",".btn_2.on",function(){
                alert("welcome!");
            })
            $(".btn_2").addClass("on");
        });
    </script>