> 웹 프론트엔드 > 프런트엔드 Q&A > 자바스크립트에서 이벤트 버블링을 방지하는 방법

자바스크립트에서 이벤트 버블링을 방지하는 방법

PHPz
풀어 주다: 2023-04-24 11:20:50
원래의
11114명이 탐색했습니다.

JavaScript의 이벤트 버블링은 요소의 이벤트가 트리거되면 문서 루트 노드에 도달할 때까지 위쪽으로 전파되는 것을 의미합니다. 그리고 바깥쪽으로 퍼지기 때문에 이벤트 버블링이라고 합니다. 이벤트 버블링 메커니즘을 구현하면 많은 이점이 있습니다. 예를 들어 이벤트 핸들러를 각 하위 요소 대신 상위 요소에 추가하여 코드 중복성을 줄이고 코드 유지 관리성과 재사용성을 향상시킬 수 있습니다. 그러나 어떤 경우에는 다른 요소에 영향을 주지 않기 위해 요소 이벤트가 발생하는 것을 방지해야 할 수도 있습니다. 이 기사에서는 JavaScript에서 이벤트 버블링을 방지하는 방법을 소개합니다.

1. 이벤트 캡처 및 이벤트 버블링

이벤트 버블링에 대해 자세히 논의하기 전에 이벤트 전파의 두 가지 단계인 이벤트 캡처와 이벤트 버블링을 이해해야 합니다. 이벤트 캡처는 문서 루트 노드에서 대상 요소로 아래쪽으로 전파되는 반면, 이벤트 버블링은 대상 요소에서 문서 루트 노드로 위쪽으로 전파됩니다. DOM 이벤트 모델에서 이벤트는 먼저 대상 요소의 가장 바깥쪽 요소에 제출된 다음 대상 요소의 이벤트가 트리거될 때까지 내부로 전파되고, 그런 다음 이벤트는 대상 요소에서 외부로 전파됩니다. 문서.

2. 이벤트 버블링을 방지하는 방법

JavaScript에서는 PreventDefault() 및 stopPropagation() 메서드를 사용하여 이벤트 전파를 방지할 수 있습니다. Event.preventDefault() 메서드는 링크를 클릭할 때 새 페이지로 이동하는 것을 방지하는 등 이벤트의 기본 동작을 방지하는 데 사용됩니다. stopPropagation() 메서드는 이벤트 전파를 방지하여 이벤트 버블링이나 이벤트 캡처를 방지하는 데 사용됩니다. 이벤트 버블링 또는 이벤트 캡처의 전파를 중지하기 위해 이벤트 처리기 내에서 호출할 수 있습니다.

  1. event.stopPropagation() 메서드를 사용하세요.

이 메서드를 사용하면 이벤트가 더 이상 전파되는 것을 방지하고 상위 요소가 다른 요소의 이벤트를 캡처하는 것을 방지할 수 있습니다. 이벤트가 트리거되면 더 이상의 전파가 중지되고 다른 이벤트 핸들러가 호출되지 않습니다.

샘플 코드는 다음과 같습니다.

document.querySelector('#child').addEventListener('click', function(event) {
  console.log('child clicked');
  event.stopPropagation();
})

document.querySelector('#parent').addEventListener('click', function(event) {
  console.log('parent clicked');
})
로그인 후 복사

이 예에서는 하위 요소를 클릭하면 이벤트 전달이 중지되고 상위 요소의 이벤트 핸들러가 트리거되지 않습니다.

  1. event.preventDefault() 메서드를 사용하세요

이 메서드는 이벤트의 기본 동작만 방지할 뿐 이벤트 버블링을 방지하지는 않습니다. 샘플 코드는 다음과 같습니다.

document.querySelector('a').addEventListener('click', function(event) {
  console.log('link clicked');
  event.preventDefault();
})

document.querySelector('div').addEventListener('click', function(event) {
  console.log('div clicked');
})
로그인 후 복사

이 예에서는 링크를 클릭하면 이벤트 핸들러가 메시지를 인쇄하고 새 페이지로 이동하는 것을 방지합니다. 그러나 상위 요소(div 요소)의 이벤트 핸들러에는 계속 전달됩니다.

  1. 이벤트 버블링 및 기본 동작 방지

때로는 이벤트의 기본 동작과 버블링 프로세스를 동시에 방지해야 할 때가 있습니다. 이 경우 PreventDefault() 및 stopPropagation() 메소드를 호출할 수 있습니다.

샘플 코드는 다음과 같습니다.

document.querySelector('a').addEventListener('click', function(event) {
  console.log('link clicked');
  event.preventDefault();
  event.stopPropagation();
})

document.querySelector('div').addEventListener('click', function(event) {
  console.log('div clicked');
})
로그인 후 복사

이 예제에서는 링크를 클릭하면 이벤트 핸들러가 PreventDefault() 및 stopPropagation() 메서드를 호출하여 이벤트의 기본 동작을 중지하고 버블링이 발생하는 것을 방지합니다. 따라서 div 요소의 이벤트 핸들러가 호출되지 않습니다.

3. 요약

이번 글에서는 자바스크립트에서 이벤트 버블링을 방지하는 방법, 즉 stopPropagation(), PreventDefault() 메소드를 소개했습니다. 또한 이벤트 버블링과 이벤트 캡처의 차이점도 다루었습니다. 이벤트 버블링을 방지해야 할 경우 stopPropagation() 메서드를 사용할 수 있고, 이벤트의 기본 동작을 방지해야 할 경우 PreventDefault() 메서드를 사용할 수 있습니다. 어떤 경우에는 이벤트 버블링을 방지하고 필요에 맞게 기본 동작을 모두 사용해야 할 수도 있습니다.

위 내용은 자바스크립트에서 이벤트 버블링을 방지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿