상추의 IT저장소
JS) Event Listener, Event Handler, Event Bubbling 본문
이벤트 리스너 & 이벤트 핸들러
이벤트 리스너와 이벤트 핸들러를 합쳐 이벤트 리스너 혹은 이벤트 핸들러라고 한다.
하지만, 이를 정확하게 말하자면 이벤트 리스너에 등록된 콜백함수가 이벤트 핸들러이다.
div.onClick(() => {});
div.addEventListener('click', () => {});
| 이벤트 | 이벤트 속성 (이벤트 리스너) | 이벤트 핸들러 |
| click | addEventListener(), onClick() | function(){} |
이벤트 핸들러의 호출 과정
1. 하위 요소에 이벤트 저나 캡쳐링
2. 타깃요소에 이벤트 전달
3. 상위 요소로 다시 이벤트 전파 버블링

이벤트 버블링 (Event Bubbling)
- 특정 요소에서 이벤트가 발생됐을 때, 해당 이벤트가 상위 요소들로 전달되어 가는 특성을 말한다.
- 이벤트가 제일 깊은곳의 요소부터 시작해 부모요소를 거슬러 올라가며 이벤트가 발생하는 모양이 마치 물속 거품과 같아 bubbling 이라고 부른다.

event.target 과 event.currentTraget 의 차이점
타깃(target) 요소
- 이벤트가 발생한 가장 안쪽의 요소로, 내가 클릭한 바로 그 요소
- event.target을 통해 접근 가능하다.
- 버블링이 진행되어도 변하지 않는다.
event.currentTarget와 this
- event.currentTarget은 this와 같다.
- 왜냐? 메소드 내부의 this는 해당 메소드를 호출한 객체에 바인딩되기 때문이다.
- this, 즉 eventCurrentTarget은 현재 요소로, 현재 실행 중인 핸들러가 할당된 요소를 참조한다.
버블링 중단시키기
event.stopPropagation()
- 이벤트 버블링을 막아야하는 경우는 거의 없다.
- 위 메소드로 버블링을 막게되면, 페이지의 어느 부분을 클릭했는지에 대한 분석 시스템이 동작하지 못하게 된다.
이벤트 캡쳐 (Event Capture)
- 이벤트 버블링과 반대되는 방법
- 이벤트 핸들러 호출 과정의 캡처링 과정에서 이벤트를 잡아내는 방법

이벤트 위임 (Event Delegation)
- 이벤트 캡처링과 이벤트 버블링을 활용한 패턴
- 하위 요소마다 이벤트를 등록하지 않고도 하위 요소들의 공통된 부모 요소에 이벤트를 등록하여 하위 요소의 이벤트들을 관리하는 방식이다.
요약
- 이벤트 버블링은 특정 요소에서 이벤트가 발생했을 때 해당 이벤트가 상위 요소들한테 차례로 전달되는 특성이다.
- 하위요소 → 상위요소로 이벤트가 전파되는 것은 이벤트 버블링이며, 이와 반대로 상위요소 → 하위요소로 이벤트가 전파되는 것은 이벤트 캡처링이다.
- 이러한 이벤트 버블링, 캡쳐링 특성을 이용하여 하위요소마다 이벤트를 등록하지 않아도 공통된 상위요소에 이벤트를 등록해 관리할 수 있는 패턴을 이벤트 위임이라고 한다
'Javascript' 카테고리의 다른 글
| JS) length 메소드 (1) | 2024.09.12 |
|---|---|
| JS)next.js- Server/Client Component (0) | 2024.08.13 |
| JS)pnpm (0) | 2024.07.30 |
| JS) Fetch API (0) | 2023.12.09 |
| JS) instance of 연산자 (0) | 2023.01.27 |