[jQuery] 이벤트 종류
이벤트란 어떠한 행위를 했을 때 어떤 반응이 일어나는 순간을 의미한다.
예를들어, 버튼을 클릭했을 때 로그인이 되거나, 페이지 이동이 일어나는 것도 클릭 이벤트의 한 종류이다.
Sep 06, 2024
이벤트란 어떠한 행위를 했을 때 어떤 반응이 일어나는 순간을 의미한다.
예를들어, 버튼을 클릭했을 때 로그인이 되거나, 페이지 이동이 일어나는 것도 클릭 이벤트의 한 종류이다.
대표적인 이벤트의 종류는 다음과 같다.
| Mouse Events | Keyboard Events | Form Events | 
| click | keypress | submit | 
| dblclick | keydown | change | 
| mouseenter | keyup | focus | 
| mouseleave | blur | 
Mouse 이벤트
마우스 작동시 일어나는 다양한 이벤트이다.
- click: 마우스로 요소 클릭시
- dblclick: 마우스로 두번클릭시
- mouseenter: 마우스포인터가 해당 요소 내부로 들어갔을시
- mouseleave: 마우스 포인터가 해당 요소 밖으로 벗어날때
<body>
    <p> p 태그 누르면 클릭 이벤트</p>
</body>
<script>
    $("p").click(function () {
        $("p").hide();
    });
</script>위 코드의 click 이 들어있는 자리를 대체 가능하며 원하는 동작을 넣을 수 있다.
Keyboard 이벤트
- keypress : 키 눌러졌을 시 (엔터, 스페이스 키에는 반응하는데 글자 키는 반응하지 않음 ㅠ)
- keydown : 키가 눌러진 순간
- keyup : 키에서 손이 떼어질때
<body>
    <p> Keyboard 이벤트</p>
    <input type="text">
 
</body>
<script>
    $("input").keypress(function () {
        $("input").css("background-color", "lightblue");
    });
</script>설정한 이벤트에 맞게 백그라운드 색이 변한다.
Form 이벤트
- submit: 서브밋은 폼 제출이 이루어질 때 발생한다.
<body>
    <p> form 이벤트</p>
    <form id="myForm">
        <input type="text" placeholder="텍스트를 입력하세요">
        <button type="submit">Submit</button>
    </form>
    <p id="message"></p>
</body>
<script>
    $("#myForm").submit(function (event) {
        event.preventDefault(); // 폼 제출 기본 동작 막기
        $("#message").text("서브밋");
    });
</script>폼 하단의 p 태그에 “서브밋” 이라는 문자가 출력된다.
주로 폼 내용의 검사 및 AJAX를 이용한 비동기 전송 에 활용된다.
- change:- <input>,- <select>,- <textarea>요소의 값이 변경된 후 발생
   <select id="mySelect">
        <option value="option1">Option 1</option>
        <option value="option2">Option 2</option>
    </select>
    <p id="selectedOption"></p>
    <script>
        $("#mySelect").change(function () {
            let selectedValue = $(this).val();
            $("#selectedOption").text("Selected: " + selectedValue);
        });
    </script>mySelect 의 값이 바뀌게 되면
$(this).val() 을 통해 바뀐 밸류(value="option1")가 selectedOption 태그 내부에 text 로 나타나게 된다.- focus: 폼 필드에 포커스가 들어가면 실행됨
- blur: 포커스를 잃으면 실행됨
    Name: <input type="text" name="fullname"><br>
    Email: <input type="text" name="email">
    <script>
        $("input").focus(function () {
            $(this).css("background-color", "yellow");
        });
        $("input").blur(function () {
            $(this).css("background-color", "green");
        });
    </script>On() 메서드
on() 메서드는 선택된 요소에 하나 이상의 이벤트 핸들러를 연결시키는 역할을 한다.<body>
    <p> form 이벤트</p>
    Name: <input type="text" name="fullname"><br>
    Email: <input type="text" name="email">
</body>
<script>
    $("input").on({
        focus: function () {
            $(this).css("background-color", "yellow");
        },
        blur: function () {
            $(this).css("background-color", "green");
        }
    });
</script>- on() 사용안한 이벤트 핸들러
$("input").focus(function () {
    $(this).css("background-color", "yellow");
});
$("input").blur(function () {
    $(this).css("background-color", "green");
});바로 상단처럼 input 태그에 대해 각각 이벤트를 지정해 줄 수 있지만
on() 메서드를 사용하여 이벤트 연결이 가능하다.
동적 생성된 Dom 선택도 가능..!
element 선택 하는 부분에 “input” 처럼 태그, 클래스 등을 적을 수 있지만
  $(document).on('focus', 'input', function () {
        $(this).css("background-color", "yellow");
    });이와 같이 document 를 넣어 페이지 로드가 끝났을 때 감지된 
input 뿐 아니라추후에 동적으로 생성될 요소도 감지할 수 있다. 
(댓글 입력 후 동적으로 추가 했을 때 유용하다.)
<body>
    <p> form 이벤트</p>
    Name: <input type="text" name="fullname"><br>
    Email: <input type="text" name="email"><br>
</body>
<script>
    // 동적으로 추가된 요소에도 이벤트가 작동하는 예시
    $(document).on('focus', 'input', function () {
        $(this).css("background-color", "yellow");
    });
    $(document).on('blur', 'input', function () {
        $(this).css("background-color", "green");
    });
    // 새로운 input 요소 추가
    $('body').append('<input type="text" name="newField" placeholder="새필드">');
</script>요소 선택자 자리에 위의 코드처럼 
document 를 선택하여 작성 시 
동적으로 생성된 요소도 이벤트가 잘 적용되었음을 알 수 있다.
Share article









