[javascript] 이벤트 버블링 이해하기

이번에는 자바스크립트에서 발생하는 이벤트 버블링에 대해 알아보겠습니다. 이벤트 버블링은 HTML 문서의 DOM 요소에서 이벤트가 발생했을 때, 가장 깊은 자식 요소부터 시작하여 부모 요소들로 이벤트가 전파되는 현상을 말합니다.

이벤트 버블링이란?

이벤트 버블링은 사용자가 마우스 클릭 또는 다른 이벤트를 발생시켰을 때, 해당 이벤트가 발생한 요소의 부모 요소로 전파되는 동작을 말합니다. 이벤트가 발생한 요소에서 시작해서 가장 바깥쪽의 요소로 이벤트가 전파되는 모습을 상상해 볼 수 있습니다.

예를 들어, 아래와 같은 HTML 구조가 있다고 가정해봅시다.

<div id="outer">
  <div id="inner">
    <button id="button">Click me</button>
  </div>
</div>

이 구조에서 버튼을 클릭했을 때 발생하는 클릭 이벤트는 버튼 요소에서 시작하여 내부 div요소, 외부 div요소, 최종적으로 document 요소까지 이벤트가 전파됩니다.

이벤트 버블링의 활용

이벤트 버블링은 부모 요소로 이벤트를 전파시켜 여러 요소에 대해 중복된 이벤트 핸들러 등록을 방지하고 코드의 유지보수성을 높일 수 있습니다. 이를테면, 여러 요소에 대해 공통된 이벤트 처리 로직이 필요할 때 부모 요소 하나에만 이벤트 핸들러를 등록하여 모든 하위 요소에 대해 동일한 처리를 할 수 있습니다.

또한, 동적으로 생성되는 요소에 대해서도 부모 요소에 이벤트 핸들러를 등록함으로써 새로운 요소가 추가되더라도 이벤트 처리가 자동으로 적용되는 장점이 있습니다.

이벤트 버블링 중단하기

이벤트 버블링을 중단시키기 위해서는 event.stopPropagation() 메서드를 사용합니다. 이 메서드를 호출하면 현재 이벤트에서의 버블링이 중단되며, 부모 요소로의 전파를 막을 수 있습니다.

document.getElementById('button').addEventListener('click', function(event) {
  event.stopPropagation();
  // 이벤트 핸들러의 로직을 작성합니다.
});

이렇게 하면 해당 버튼 클릭 이벤트에서만 이벤트 버블링이 중단되어, 상위 요소들로의 전파가 막히게 됩니다.

이렇게 이벤트 버블링에 대한 기본적인 이해와 활용 및 중단 방법을 살펴봤습니다. 이를 통해 자바스크립트에서 이벤트를 효과적으로 관리하고 활용할 수 있습니다.

참고 자료