[jQuery] 이벤트 종류

이벤트란 어떠한 행위를 했을 때 어떤 반응이 일어나는 순간을 의미한다. 예를들어, 버튼을 클릭했을 때 로그인이 되거나, 페이지 이동이 일어나는 것도 클릭 이벤트의 한 종류이다.
HootJem's avatar
Sep 06, 2024
[jQuery] 이벤트 종류
이벤트란 어떠한 행위를 했을 때 어떤 반응이 일어나는 순간을 의미한다.
예를들어, 버튼을 클릭했을 때 로그인이 되거나, 페이지 이동이 일어나는 것도 클릭 이벤트의 한 종류이다.
 
대표적인 이벤트의 종류는 다음과 같다.
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>
      설정한 이벤트에 맞게 백그라운드 색이 변한다.
notion image
notion image

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>
notion image
notion image
notion image
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>
notion image
포커스 중에 노란색 배경
포커스 중에 노란색 배경
블러되면(포커스 잃으면) 초록 배경
블러되면(포커스 잃으면) 초록 배경

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>
notion image
이 코드에 의하면 제일 하단의 새필드 는 load 가 끝난 뒤 생성되었다.
만약 요소 선택자에 input 을 넣는다면
notion image
제일 아래 요소는 포커스, 블러 어떤 이벤트가 일어나더라도 변경되지 않는다.
요소 선택자 자리에 위의 코드처럼 document 를 선택하여 작성 시
notion image
동적으로 생성된 요소도 이벤트가 잘 적용되었음을 알 수 있다.
 
Share article

[HootJem] 개발 기록 블로그