JAVASCRIPT

버블링이란?

funfunweb 2024. 10. 30. 16:56

버블링(Bubbling)은 자바스크립트 이벤트 전파의 한 방식으로, 이벤트가 발생한 요소에서 시작하여 그 요소의 부모 요소들로 차례로 전파되는 과정을 의미합니다. 기본적으로 자식 요소에서 발생한 이벤트가 부모 요소로 전파되는 방식입니다.

버블링의 동작 원리

  1. 이벤트 발생: 특정 요소에서 이벤트가 발생합니다. (예: 버튼 클릭)
  2. 버블링 시작: 이벤트는 가장 깊은 요소(이벤트가 발생한 요소)에서 시작하여 그 요소의 부모로 전파됩니다.
  3. 부모 요소로 전파: 각 부모 요소에서 해당 이벤트를 처리할 수 있는 기회를 가지며, 최상위 요소인 document까지 전파됩니다.

예제

다음은 버블링을 설명하기 위한 간단한 예제입니다:

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>버블링 예제</title>
    <style>
        #grandparent {
            padding: 20px;
            border: 2px solid red;
        }
        #parent {
            padding: 20px;
            border: 2px solid blue;
        }
        #child {
            padding: 20px;
            border: 2px solid green;
        }
    </style>
</head>
<body>
    <div id="grandparent">조부모
        <div id="parent">부모
            <button id="child">자식 버튼</button>
        </div>
    </div>

    <script>
        const grandparent = document.getElementById('grandparent');
        const parent = document.getElementById('parent');
        const child = document.getElementById('child');

        grandparent.addEventListener('click', function() {
            console.log('조부모 클릭됨!');
        });

        parent.addEventListener('click', function() {
            console.log('부모 클릭됨!');
        });

        child.addEventListener('click', function() {
            console.log('자식 버튼 클릭됨!');
        });
    </script>
</body>
</html>

설명

  1. HTML 구조: 조부모, 부모, 자식 요소로 이루어진 구조입니다. 자식 요소는 버튼입니다.
  2. JavaScript: 각 요소에 클릭 이벤트 리스너를 추가했습니다.
    • 조부모 요소 클릭 시 "조부모 클릭됨!" 메시지 출력
    • 부모 요소 클릭 시 "부모 클릭됨!" 메시지 출력
    • 자식 버튼 클릭 시 "자식 버튼 클릭됨!" 메시지 출력

실행 결과

  • 버튼을 클릭하면, "자식 버튼 클릭됨!", "부모 클릭됨!", "조부모 클릭됨!" 순서로 메시지가 출력됩니다. 이는 이벤트가 자식 요소에서 발생하고, 부모 요소로 버블링되기 때문입니다.

버블링의 장점

  • 이벤트 위임: 부모 요소에 이벤트 리스너를 추가하여 자식 요소의 이벤트를 한 번에 처리할 수 있어 성능 향상과 코드 간소화에 도움이 됩니다.
  • 효율적인 이벤트 관리: 많은 자식 요소가 있는 경우, 각각에 이벤트를 등록할 필요 없이 부모 요소에만 등록하여 관리할 수 있습니다.

버블링은 이벤트 처리에서 중요한 개념이므로 이해하고 활용하는 것이 중요합니다!

'JAVASCRIPT' 카테고리의 다른 글

location 객체  (0) 2024.10.30
window 객체  (0) 2024.10.30
preventDefault(), stopPropagation(), return false 차이점  (0) 2024.10.30
이벤트 객체  (0) 2024.10.30
객체란?  (0) 2024.10.24