1 2 3 4 5 6 7 | <div class="a"> <div class="b"> <div class="c"></div> </div> </div> | cs |
이러한 계층구조일 때
1 2 3 4 5 6 7 8 9 10 11 12 | document.querySelector('.a').addEventListener('click', function(){ console.log('a'); }, false); document.querySelector('.b').addEventListener('click', function(){ console.log('b'); }, false); document.querySelector('.c').addEventListener('click', function(){ console.log('c'); }, false); }) | cs |
이벤트의 마지막인자로 false를 받으면 버블링, true면 캡쳐링이다.
버블링(bubbling)이란
이벤트를 실행했을때 자식 -> 부모순으로 이벤트가 전달됨.
즉 가장 하위엘리먼트인 c 를 클릭했을 떄 이벤트가 발생하고 그 후
c의 부모인 b에게 이벤트가 일어나고 b의 부모인 a에게 이벤트가 발생함.
c 클릭시 이벤트 발생순서 c -> b -> a
b 클릭시 이벤트 발생순서 b -> a
a 클릭시 이벤트 발생순서 a
인자 : false
캡쳐링(Capturing)
버블링과 방향이 반대이다. 부모 -> 자식순으로 이벤트가 전달된다.
c 클릭시 이벤트 발생순서 c
b 클릭시 이벤트 발생순서 b -> c
a 클릭시 이벤트 발생순서 a -> b -> c
인자 : true
이벤트 전달의 차단
evt.stopPropagation();
을 넣어주면 해당노드는 이벤트가 전파되지 않는다.
'개발 > Javascript' 카테고리의 다른 글
자바스크립트 - 02. 변수와 주석 (0) | 2016.07.07 |
---|---|
자바스크립트 - 01. 숫자와 문자 (0) | 2016.07.07 |
웹페이지 성능향상을 위한 자바스크립트 삽입방식과 위치 (0) | 2016.07.07 |
자바스크립트 - DOM 이란? (0) | 2016.07.04 |
자바스크립트 함수 호출 (0) | 2016.07.04 |