본문 바로가기
develop/javascript

[JS] bubbling & capturing

by hyoE 2021. 7. 4.
반응형

 

bubbling : 한 요소에 이벤트가 발생하면, 이 요소에 할당된 핸들러가 동작하고, 이어서 부모 요소의 핸들러가 동작한다. 가장 최상단의 조상 요소를 만날 때까지 이 과정이 반복되면서 요소 각각에 할당된 핸들러가 동작

 

 

capturing : bubbling의 역순으로 생각하면 된다.

 

 

 

 

문제점

부모, 자식 구조에서 둘다 click 할 때, 이벤트가 발생하도록 되어진 상황. 

자식만 클릭하여 실행하고 싶지만 겹쳐있기 때문에 부모 이벤트도 발생.

 

해결방안

1. stopPropagation

 뜻 그대로 전달을 멈춘다. stopImmediatePropagation과 같이 사용하면 막을 수 있지만 자연스러운 흐름을 강제로 종료하기 때문에 가급적 사용하지 않기. 

 

2. event.target과 evnet.currentTarget이 다른 점을 이용

 부모쪽에

if (event.target !== event.currentTarget) {

return;

}

입력하면 event.target은 부모지만 event.currentTarget은 자식쪽에 발생하기 때문에 실행되지 않는다.

 

 

 

반응형

'develop > javascript' 카테고리의 다른 글

[JS] parseFloat() & parseInt()  (0) 2021.08.30
[JS] substring() / substr() 비교  (0) 2021.08.17
[JS] filter  (0) 2021.06.28
[JS] sort  (0) 2021.06.27
[JS] for in / for of 그리고 map / reduce  (0) 2021.06.26

댓글