<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
를 클릭하면
<p>
에 할당된 onclick
핸들러가 동작함<div>
에 할당된 onclick
핸들러가 동작함<form>
에 할당된 onclick
핸들러가 동작함document
객체를 만날 때까지, 각 요소에 할당된 핸들러가 동작위와 같이 동작하기 때문에 P를 클릭했을 때
: p
-> div
-> form
순서로 3개의 alert창이 뜬다.
이러한 흐름을 이벤트 버블링
이라고 함.
하지만 모든 이벤트가 버블링이 되는 것은 아니다. focus 이벤트처럼 버블링이 되지 않는 이벤트가 있음.
event.stopPropagation()
을 할당해주는 방법이 있다.내용 추가 예정