반응형
div가 중첩되어 있을 때 마우스 클릭 이벤트를 전달하고 싶지 않을 때가 있습니다.
그림과 같이 BODY, Bottom, Top이 중첩된 구조에서 Top이 팝업 메뉴라 가정하고,
Bottom이나 BODY 부분에 마우스 클릭 이벤트 핸들러를 추가해서 Top을 닫는 코드를 넣었다고 가정해 보겠습니다.
코드를 작성 후 실행하면, 의도와 다르게 Top 부분을 클릭해도 Top이 닫혀버립니다.
이유는 Top을 클릭하면 그 이벤트가 Bottom, BODY로 전달되기 때문입니다.
이럴때 사용할 수 있는 것이 stopPropagation입니다.
https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation
Top의 마우스 클릭 이벤트 핸들러에서 stopPropagation을 호출하면 Bottom과 BODY로
마우스 클릭 이벤트가 전달되지 않습니다.
document.getElementById("top").addEventListener("click", (event) => {
console.log("top");
event.stopPropagation();
})
반응형
'JavaScript' 카테고리의 다른 글
div가 맨 위에 있는지 확인하는 방법. (0) | 2022.11.07 |
---|---|
아직 까지 console.log 만 사용하시나요??? (0) | 2022.09.28 |
css 속성 값으로 계산 식 넣기. (0) | 2021.12.09 |
div에 자동 스크롤 기능 적용하기 (0) | 2020.05.19 |
비동기 호출, async, await를 이해해 보자. (0) | 2020.04.16 |