Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- vue mixin
- 프로그래머스 프론트엔드 데브코스
- vue 이벤트 수신
- Spacer
- netlify redirect
- nextjs사용법
- SCSS extend
- 프로그래머스 K_Digital Training
- KDT 프로그래머스
- 고양이 사진 검색기
- postcss
- 리스트 렌더링
- 다른컴퓨터에서 git사용
- vuex map
- SCSS import
- vue 지역 컴포넌트
- KDT 프로그래머스 데브코스 프론트엔드
- 리액트
- SCSS use
- 쌓임맥락
- 프로그래머스 데브코스 프론트엔드
- 이벤트 수식어
- flex
- react next
- intersection opserver
- 프로그래머스 데브코스
- Vue
- 폼 입력 바인딩
- git 같은계정 다른 컴퓨터
- SCSS forward
Archives
- Today
- Total
혼자 적어보는 노트
[Javascript] 부모 클릭 이벤트 자식요소 클릭 시 무시 시키는 방법 본문
부모요소와 자식요소가 각각의 클릭이벤트를 가지고 있을 때
자식요소 클릭시에 부모 요소의 해당 이벤트가 실행된다.
e.target 과 e.currentTarget을 이용한 방법
function parantClick(e) {
if (e.target !== e.currentTarget) return;
console.log("부모클릭");
}
function childClick(e) {
console.log("자식클릭");
}
parent.addEventListener("click", parantClick);
child.addEventListener("click", childClick);
if (e.target !== e.currentTarget) return;
위의 코드처럼 진행 시 자식요소 클릭 시 부모요소의 console.log가 찍히지 않는다.
자식 요소에 e.stopPropagation() 사용
function parantClick(e) {
console.log("부모클릭");
}
function childClick(e) {
e.stopPropagation();
console.log("자식클릭");
}
e.stopPropagation 는 상위 엘리먼트들로의 이벤트 전파를 중단시켜준다.
+++++++++
하지만 부모에 클릭 event가 아닌 <a> 혹은 <link> 태그로 인한 링크 이동이라면
어떻게 제어해야할까?
자식 요소에 e.preventDefault() 사용
function parantClick(e) {
console.log("부모클릭");
}
function childClick(e) {
e.preventDefault();
console.log("자식클릭");
}
해당 경우에는 부모와 자식의 console.log가 전부 찍히긴 하지만
부모가 url을 변경하는 태그로 감싸져 있을 때 자식요소 클릭 시 링크가 이동되는것을 막아준다.
사실상 마크업상 <a>, <link>태그 안에 클릭될 요소를 넣지 않는 것이 맞다.
그러니 해당 방법은 어쩔 수 없는 상황이 아니라면 지양하도록 하자
'Javascript' 카테고리의 다른 글
[Javascript] 실행 컨텍스트(Execution Context) (0) | 2021.12.12 |
---|---|
[Javascript] ES6 객체 리터럴의 확장 기능 / 객체 메소드 (0) | 2021.12.03 |
[Javascript] 데이터 타입 별 데이터 할당 / 불변 값 / 가변 값 (0) | 2021.12.02 |
[Javascript] clientWidth, clientHeight / scrollWidth, scrollHeight / scrollTop , scrollLeft (0) | 2021.11.24 |
[Javascript] offsetTop, offsetLeft / offsetParent / offsetWidth, offsetHeight (0) | 2021.11.24 |
Comments