
See the Pen 이벤트 버블링 by rit245 (@rit245) on CodePen.
자바스크립트로 로그를 출력합니다. 이 때 하나만 썼음에도 event가 줄줄이 소세지처럼 실행됩니다
이는 이벤트 버블링이 일어났기 때문에 그렇습니다.
See the Pen 220831_이벤트-버블링2 by rit245 (@rit245) on CodePen.
엘리먼트를 클릭하여 on 클래스를 부여하는 함수를 만들었습니다.
이 코드의 문제점은 자식 선택자가 선택되기 때문에 원래의 목적에 맞추어 사용하기 힘듭니다.
See the Pen 220831_이벤트-버블링3 by rit245 (@rit245) on CodePen.
자식 선택자를 클릭했을 때 부모 버튼에 on 클래스를 추가합니다.
만약 조상 선택자를 클릭했을 경우를 대비해 else if 를 통해 return 을 설정합니다.
| 버블링 불가능 | 버블링 가능(이벤트 확산) | 설명 |
| focus() | focusin() | 선택 요소가 포커스가능할 때 포커스를 줍니다 |
| blur() | focusout() | 선택 요소에서 포커스를 벗어날 때 |
| mouseenter() | mouseover() | 마우스를 올렸을 때 |
| mouseleave() | mouseout() | 마우스가 벗어났을 때 |
버블링을 막아야 하는경우는 거의 없습니다. 오히려
stopPropagation을 사용한 영역은 분석 시스템의 코드가 동작하지 않기 때문에dead zone이 될 수 있습니다. 꼭 필요한 경우가 아니라면 버블링을 막지 않는게 좋습니다.
<button onclick="event.stopPropagation()">버튼</button>
거의 사용하지는 않지만 이론을 알고계시면 도움이 됩니다.