<style>
body * {
margin: 10px;
border: 1px solid red;
}
</style>
<form onclick="alert('form')">FORM
<div onclick="alert('div')">DIV
<p onclick="alert('p')">P</p>
</div>
</form>
위와 같이 되어있을 때 P
를 클릭하면
1. <p>
에 할당된 onclick
핸들러가 동작함
2. 부모 태그인 <div>
에 할당된 onclick
핸들러가 동작함
3. 또 그 부모인 <form>
에 할당된 onclick
핸들러가 동작함
4. document
객체를 만날 때까지, 각 요소에 할당된 핸들러가 동작
위와 같이 동작하기 때문에 P를 클릭했을 때
p
-> div
-> form
순서로 총 3개의 alert창이 뜬다.
이러한 흐름을 이벤트 버블링
이라고 함.
하지만 모든 이벤트가 버블링이 되는 것은 아니다.
focus 이벤트처럼 버블링이 되지 않는 이벤트가 있음.
event.stopPropagation()
을 할당해주는 방법이 있다.내용 추가 예정