1.이벤트 버블링
버블링: 특정 화면 요소에서 이벤트가 발생했을때 상위 요소로 전달되어 이벤트를 발생시키는것을 의미한다.
위그림의 구조이다. 모두 클릭이벤트가 있다고 가정해보자.
<div id="div1">
<div id="div2">
<p>예시<p>
</div>
</div>
타겟:클릭한 이벤트 요소
P태그(타겟) 클릭시 이벤트가 발생하고
그다음 #div2인 div에 이벤트가 발생하고
그다음 #div1인 div에 이벤트가 발생한다.
이를 버블링 이라고 한다.
이러한 버블링이 일어나는 이유는 브라우저가 이벤트를 감지하는 방식 때문이다.
2.이벤트 캡처링
타겟:클릭한 이벤트 요소
말그대로 반대로 진행되는 이벤트 전파방식이다.
#div1인 div태그(타겟) 클릭시
그다음 #div2인 div에 이벤트가 발생하고
그다음 p태그에 이벤트가 발생한다.
이를 캡처링 이라고 한다.
JS코드에선 캡처링을 TRUE,FALSE로 방지할수있다.
default는 false라서 true로 하지않는한 캡처링은 발생할것이다.
var divs = document.querySelectorAll('div');
divs.forEach(function(div) {
div.addEventListener('click', logEvent, {
capture: true // default 값은 false입니다.
});
});
function logEvent(event) {
console.log(event.currentTarget.className);
}
3.버블링,캡처링 방지
event.stopPropagation()
function logEvent(event) { event.stopPropagation(); }
위 API는 해당 이벤트가 전파되는 것을 막는다. 따라서, 이벤트 버블링의 경우에는 클릭한 요소의 이벤트(타겟) 만 발생시키고 상위 요소로 이벤트를 전달하는 것을 방해한다. 그리고 이벤트 캡쳐의 경우에는 클릭한 요소의 최상위 요소의 이벤트만 동작시키고 하위 요소들로 이벤트를 전달하지 않는다.
출처:
https://joshua1988.github.io/web-development/javascript/event-propagation-delegation/
- Total
- Today
- Yesterday
- 데이터베이스#RDBMS#스키마
- 네이버 노출
- 네이버
- PP
- CheckBox
- 검색결과
- 네이버노출
- ㅂㅜ티
- onClick
- RSS태그#지식
- 티스토리
- data속성일때 선택자
- jQuey
- react
- domain
- 캡처링
- 다짐#개발자#Vlog
- 도메인이해
- js
- p
- 배열선택자
- Develop 사전
- 도메인개념
- EQ
- CSP#콘텐츠보안정책#style코드 작성시
- 버블링
- ~`
- ㅏ
- 선택자
- 유입증가시키는방법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |