이벤트 버블링(Event Bubbling) - 버블이 폭발해서 올라간다 생각하자
이벤트 버블링은 이벤트가 발생한 요소에서 시작하여 최상위 요소까지 올라가는 과정을 의미합니다. 즉, 이벤트 버블링 단계에서 이벤트는 발생한 요소로부터 상위 요소로 이동합니다. 이벤트 버블링은 일반적으로 이벤트 리스너의 세 번째 인수로 false를 전달하여 활성화됩니다.
<div onclick="alert('여기는 상위div')"> // 이곳이 실행된다
<li>여기는 리스트, 이벤트핸들러</li> // 여기 클릭시
</div>
이벤트 캡처링(Event Capturing) - 위에서 포착해서 사로잡는다 생각하자
이벤트 캡처링은 이벤트가 최상위 요소에서 시작하여 실제 대상 요소에 도달할 때까지 내려가는 과정을 의미합니다. 즉, 이벤트 캡처링 단계에서 이벤트는 최상위 요소에서 시작하여 하위 요소로 이동합니다. 이벤트 캡처링은 일반적으로 이벤트 리스너의 세 번째 인수로 true를 전달하여 활성화됩니다.
발생순서
1.이벤트 캡처링
2.이벤트 타겟에 도달
3.이벤트 버블링
1. window=>html=>body=>form=>div=> 2. li(event.target일경우)
3. li=> div => form => body => html => window
event.stopPropagation()으로 상위로 올라가는 버블링을 막을 수 있다.
위아래 다 막으려면 event.stopImmediatePropagation()을 사용해야 한다.
event.target() - 현재 클릭한 부분
event.currentTarget() - 실제 이벤트핸들러가 적용된 부분(event.target과 일치할 수도 있음)
이벤트 위임은 부모요소에 이벤트핸들러 함수를 적용한 후에 if문으로 조건을 달아주면 된다
if(event.target.tagName === 'div') {
console.log('이벤트 위임')
}
'개발공부 > Javascript' 카테고리의 다른 글
#기본기18_ES6 클래스와 전동적인 함수생성자의 차이점과 활용성 (1) | 2024.04.03 |
---|---|
#기본기17_모듈 시스템을 통한 코드의 관리 및 재사용 (1) | 2024.04.03 |
#기본기15_localStorage와 sessionStorage의 차이 (0) | 2024.04.03 |
#기본기14_자바스크립트의 프로토타입 기반 상속 활용 (1) | 2024.04.03 |
#기본기13_자바스크립트에서 메모리 관리와 성능 최적화 방법 (1) | 2024.04.03 |