>  기사  >  웹 프론트엔드  >  JavaScript 이벤트 버블링과 이벤트 캡처의 차이점

JavaScript 이벤트 버블링과 이벤트 캡처의 차이점

PHPz
PHPz원래의
2024-02-18 16:32:08431검색

JavaScript 이벤트 버블링과 이벤트 캡처의 차이점

js 이벤트 버블링과 캡처의 차이점은 무엇이며 구체적인 코드 예제가 필요합니다.

이벤트 버블링과 이벤트 캡처는 JavaScript에서 이벤트 처리의 두 단계입니다. 이를 이해하기 전에 DOM 이벤트가 무엇인지 이해해야 합니다.

HTML에서는 사용자가 버튼 클릭, 창 스크롤 등 페이지의 요소와 상호 작용할 때 이러한 동작을 이벤트라고 합니다. DOM(Document Object Model) 이벤트는 이벤트 발생 시 실행되는 JavaScript 코드를 의미합니다.

JavaScript에서 이벤트 핸들러는 addEventListener를 통해 또는 요소의 속성에 직접 메서드를 할당하여 요소에 바인딩될 수 있습니다. 어떤 방법을 사용하든 이벤트는 특정 순서로 요소 간에 전파됩니다.

다음으로 이벤트 버블링 및 이벤트 캡처에 대해 자세히 살펴보고 구체적인 코드 예제를 제공하겠습니다.

이벤트 버블링:
이벤트 버블링은 이벤트가 가장 안쪽 요소에서 전파되기 시작하여 단계적으로 가장 바깥쪽 요소로 바깥쪽으로 전파되는 것을 의미합니다. 즉, 이벤트는 먼저 현재 요소에서 트리거된 다음 상위 요소, 가장 바깥쪽 요소까지 전파됩니다.

예를 들어 다음과 같은 HTML 구조와 하위 요소 범위를 가진 상위 요소 div가 있습니다.

<div id="parent">
  <span id="child">Hello World!</span>
</div>

아래와 같이 하위 요소 범위에 클릭 이벤트를 추가하는 경우:

var child = document.getElementById('child');
child.addEventListener('click', function() {
  console.log('child element clicked!');
});

하위 요소를 클릭하면 요소 범위, 이벤트는 다음 순서로 전파됩니다.

  1. 하위 요소 범위의 클릭 이벤트가 트리거되고 "하위 요소 클릭!"이 출력됩니다.
  2. 이벤트는 상위 요소 div에 전파되고, 상위 요소는 해당 이벤트 핸들러(있는 경우)도 실행합니다.
  3. 더 높은 수준의 요소가 있는 경우 이벤트는 가장 바깥쪽 요소로 전달됩니다.

이벤트 캡처:
이벤트 캡처는 이벤트가 가장 바깥쪽 요소에서 전파되기 시작하여 가장 안쪽 요소까지 단계적으로 전파된다는 의미입니다. 즉, 이벤트는 가장 바깥쪽 요소에서 먼저 트리거된 다음 가장 안쪽 요소까지 하위 요소로 전파됩니다.

JS에서 이벤트 캡처를 구현하려면 이벤트 리스너를 추가할 때 useCapture라는 선택적 매개변수를 전달해야 합니다. 기본적으로 useCapture 값은 false입니다. 즉, 이벤트가 버블링 방식으로 전파됩니다. useCapture를 true로 설정하면 이벤트가 캡처된 방식으로 전파됩니다.

예를 들어 다음 HTML 구조를 가진 상위 요소 div와 하위 요소 범위가 있습니다.

<div id="parent">
  <span id="child">Hello World!</span>
</div>

다음과 같이 상위 요소 div에 클릭 이벤트를 추가하는 경우:

var parent = document.getElementById('parent');
parent.addEventListener('click', function() {
  console.log('parent element clicked!');
}, true);

하위 요소 범위를 클릭하면 , 이벤트는 다음 순서로 전파됩니다.

  1. 가장 바깥쪽 요소 div의 클릭 이벤트가 트리거되고 "상위 요소 클릭!"이 출력됩니다.
  2. 이벤트는 하위 요소 범위 내부로 전파되며 하위 요소도 해당 이벤트 핸들러(있는 경우)를 실행합니다.

이벤트 전파 순서는 바뀔 수 있지만 실제로는 이벤트 버블링이 일반적으로 사용된다는 점에 유의해야 합니다.

요약하자면 이벤트 버블링과 이벤트 캡처는 JavaScript에서 이벤트 처리의 두 단계입니다. 차이점과 사용법을 이해하면 이벤트 전달 및 처리를 더 잘 제어하는 ​​데 도움이 됩니다. 실제 개발에서는 필요에 따라 이벤트 버블링이나 이벤트 캡처를 사용하거나 두 가지를 동시에 사용하여 복잡한 이벤트 논리를 처리하도록 선택할 수 있습니다.

위 내용은 JavaScript 이벤트 버블링과 이벤트 캡처의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.