이벤트 위임
이벤트 위임(Event delegation)
하나의 좋은 예시는 일련의 리스트 아이템들입니다 — 만약 각각이 선택되었을 때 메시지를 띄우기(pop up)를 원한다면, 여러분은click
이벤트 리스너를 부모<ul>
에 설정할 수 있고, 이벤트들은 리스트 아이템들에서<ul>
까지 올라갈 것입니다.
→ 이벤트 버블링/캡처링을 이용한 것으로, 여러 하위 요소마다 각각 이벤트 핸들러를 할당하지 않고, 공통되는 상위 요소에 이벤트 핸들러를 할당하여 이벤트를 관리하는 방식
- 여러 개의 이벤트 리스너를 최소화하여 효율적
- 코드 간결, 유지보수 용이
- 더 적은 이벤트 리스너 → 메모리 사용 최적화
- DOM 계층의 다양한 수준에서 이벤트 처리 가능
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
이벤트 위임 X
const li = document.querySelectorAll("li");
li.forEach((li) => {
li.addEventListener("click", () => {
li.classList.add("selected");
});
});
→ 반복문을 통해 각 li 요소마다 이벤트 리스너 추가
이벤트 위임 O
const ul = document.querySelector("ul");
ul.addEventListener("click", (event) => {
if (event.target.tagName == "LI") {
event.target.classList.add("selected");
}
});
→ 모든 li 요소의 공통 상위 요소인 ul에 이벤트 리스너 추가
⇒ li 요소 클릭 시 ul 요소로 이벤트 버블링
references
👉 https://c4u-rdav.tistory.com/85