자바스크립트 Bubbling
반응형
이번 포스트는 JavaScript event Bubbling에 대한 내용입니다.
JavaScript Bubbling
브라우저에서 JavaScript 이벤트는 두 가지 단계로 이벤트 리스너를 실행시킵니다. 첫 번째가 버블링(bubbling) 2 번째가 캡처링(capturing)입니다. 버블링은 내부에서 외부로 이동하고, 캡처링 단계는 외부에서 내부로 이동합니다. 기본적으로 addEventListener로 추가된 모든 이벤트 리스너는 버블링으로 동작합니다.
HTML 코드
<div id ='container'>
<button>Click</button>
</div>
JavaScript 코드
div와 button에 eventListener click이벤트를 추가하였습니다.
const div = document.querySelector('div');
const button = document.querySelector('button');
div.addEventListener('click', event =>{
console.log('this is div');
console.log(event);
});
button.addEventListener('click', event =>{
console.log('this is button');
console.log(event);
});
button을 클릭하면 보이는 결과:
this is button
MouseEvent {}
this is div
MouseEvent {}
브라우저가 내부에서 바깥쪽으로 리스너가 등록되어 있는지 확인합니다. 이벤트가 발생한 element부터 모든 조상 element까지 보면서 event 리스너가 있으면 실행합니다.
stopPropagation
만약에 위의 예제에서 button의 클릭 이벤트가 전달되는 것을 막고 싶다면 stopPropagation을 사용하면 됩니다.
button.addEventListener('click', event =>{
event.stopPropagation();
console.log('this is button');
console.log(event);
});
stopPropagation은 조상 element에 있는 이벤트 리스너를 실행하지 않게 합니다. 그래서 이 경우에는 버튼을 클릭했을 때 this is div가 출력되지 않습니다.
반응형
'컴퓨터 IT > Javascript' 카테고리의 다른 글
리팩터링이란? (0) | 2023.06.19 |
---|---|
ESLint 쉬운 설치 방법 (0) | 2023.02.20 |
자바스크립트 preventDefault 정리 (0) | 2022.12.18 |
자바스크립트 버튼 클릭 이벤트 추가하는 3가지 방법 (0) | 2022.12.16 |
자바스크립트 getElementById, querySelector 차이점 (0) | 2022.12.11 |
댓글
이 글 공유하기
다른 글
-
리팩터링이란?
리팩터링이란?
2023.06.19 -
ESLint 쉬운 설치 방법
ESLint 쉬운 설치 방법
2023.02.20 -
자바스크립트 preventDefault 정리
자바스크립트 preventDefault 정리
2022.12.18 -
자바스크립트 버튼 클릭 이벤트 추가하는 3가지 방법
자바스크립트 버튼 클릭 이벤트 추가하는 3가지 방법
2022.12.16