<div id="element1" class="box">
<div id="element2" class="box2">버블링</div>
</div>
<div id="element3" class="box">
<div id="element4" class="box2">캡처링</div>
</div>
const element1 = document.querySelector('#element1');
const element2 = document.querySelector('#element2');
const element3 = document.querySelector('#element3');
const element4 = document.querySelector('#element4');
element1.addEventListener('click', e=>{console.log('element1 clicked')});
element2.addEventListener('click', e=>{console.log('element2 clicked')});
element3.addEventListener('click', e=>{console.log('element3 clicked')});
element4.addEventListener('click', e=>{console.log('element4 clicked')});
버블링은 자식을 선택해도 그 위의 조상이나 부모까지 영향이 가는 것.
element2를 클릭하면 element1과 element2 둘다 이벤트가 실행 됨.
캡쳐링은 이벤트를 등록하는 것.
타켓팅은 이벤트 로직을 수행하는 것.
참고로 element4를 클릭해서 element3에 e.target을 찍어봐도 element4가 나옴.
e.target은 실질적으로 클릭한 요소임.
타겟은 클릭한 element4이지만 버블링 해서 그 부모의 클릭 이벤트 까지도 같이 발동 된 듯.
'프론트엔드-코드 > Javascript' 카테고리의 다른 글
기본 이벤트 막기 (ex:우클릭 콘텍스트메뉴) (0) | 2023.09.26 |
---|---|
부모 이벤트까지 실행되는 이벤트 전파 막기( 버블링 방지 ) (0) | 2023.09.26 |
DOM 객체 (0) | 2023.09.25 |
제이쿼리 .eq() 같은 거 (0) | 2023.09.25 |
랜덤 색상 얻기 (0) | 2023.09.25 |