[이벤트버블링,이벤트캡쳐 쉽게 알려줄게요] event.stopPropagation

예제 html 코드

 

<form onclick="alert('form')">FORM

    <div onclick="alert('div')">DIV

         <p onclick="alert('p')">P</p>

    </div>

</form>

 

========================================================

 

이벤트 버블링이란?

 

엘리먼트에서 이벤트가 감지 되었을 때, 해당 엘리먼트를 포함하고 있는 부모 엘리먼트를 통하여 최상위 까지 이벤트가 전달되는 것

 

쉽게 말해서 해당 태그부터 ~ 상위태그 -> window 순서로 이벤트가 전달

 

ex) 예제코드에서 <P>클릭시

P → div → form → ….. →window 순으로 alert

 

*참고사항

해당 경우는 태그마다 이벤트가 등록되어 있기 때문에 상위 요소로 이벤트가 전달되는 것을 확인할 수 있음,

단순히 이벤트가없는 태그라면 확인할수 없음

 

 

========================================================

 

이벤트 캡쳐링(이벤트캡쳐)

 

이벤트 캡쳐는 이벤트 버블링과 반대 방향으로 진행되는 이벤트 전달 방식

 

 window부터 최초 이벤트가 발생한 자식 요소로 내려가는 과정

 

ex) 예제코드에서 <P>클릭시

Window → … → form → div → p 순으로 alert

 

 

========================================================

 

 

캡쳐링 사용방법(capture:true)

- 사용빈도가 적음

 

target.addEventListener("click", function(){}, true);

 

ex) div.addEventListener('click', logEvent, {

                     capture: true // default 값은 false입니다.

           });

logEvent : 어떤 함수

 

 

 

========================================================

 

 

이벤트전파 막기, 캡쳐링 버블링을 원치 않는다면?

 

event.stopPropagation()

 

ex)

    $("body").on('click', 'input', function(e) { 
            e.stopPropagation(); 
    });

 

========================================================

 

 

 

해당 글이 이해가 어려울 수도 있지만, 단순하고 쉽게 생각하길 바랍니다.

 

 

" 자바스크립트는 이벤트의 전달이 발생하고,

 

  캡쳐와 버블링은 그 전달 순서가 반대된다. "

 

댓글

Designed by JB FACTORY