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
- Prototype
- regExp
- Node.js
- just-one-small-sip
- module wrapper function
- css 오버레이
- ajax
- Sass
- Object.create
- Express
- select by attribute
- 정규표현식
- es6
- img 확대
- improve-iq-by-up-to-10%!
- css
- css grid
- close together
- flex-shrink
- JS
- 무료 백엔드 배포
- flex-grow
- node
- Engoo
- express-handlebars
- css variables
- flexbox
- flex-basis
- shit-christmas
- 디자인패턴
Archives
- Today
- Total
Event Bubbling & Delegation 본문
Event Bubbling
어떤 요소의 이벤트 핸들러가 동작할 때 그 요소의 상위, 더 나아가 최상단 요소의 핸들러까지 동작해버리는 현상을 이야기 한다.
// Event Bubbling card-title을 클릭했지만 아래 모든 핸들러가 전부 동작해버림
document.querySelector(".card-title").addEventListener("click", function(e) {
console.log("card title");
});
document.querySelector(".card-content").addEventListener("click", function(e) {
console.log("card content");
});
document.querySelector(".card").addEventListener("click", function(e) {
console.log("card");
});
document.querySelector(".col").addEventListener("click", function(e) {
console.log("col");
});
Event Delegation (이벤트 위임)
Event Delegation은 위와 같은 버블링 현상을 이용하여 같은 형제요소에 이벤트를 여러번 등록하는 대신 상위 요소에 이벤트를 한번 등록하고 필터함으로 좀 더 효율적으로 이벤트를 이용하도록 하는 방법이다. 또한 document가 로드되고 나서 추가된 DOM 객체들에 대해 이벤트를 걸어야할 때, document 로드 후에 존재하는 상위부모요소에 이벤트를 거는 용도로도 이용된다. ( 간단히 말하면 아직 존재하지 않은 DOM 객체에 이벤트를 걸어야할 때 이용된다는 뜻 )
document.body.addEventListener("click", deleteItem);
function deleteItem(e) {
if(e.target.parentElement.className === "delete-item secondary-content") {
console.log(`delete item`);
}
}
위와 같이 이벤트를 위임하여 이벤트를 각각의 delete-item에 할당하는 대신 상위 요소인 body에 하나만 할당하고 내부에서 조건문을 이용하여 필터함으로 효율적으로 코딩할 수 있다.
'2021 프론트 엔드 로드맵 따라가기 > JS' 카테고리의 다른 글
Number()와 parseInt() 차이 (0) | 2021.06.04 |
---|---|
Local Storage & Session (0) | 2021.06.01 |
Key & Input events (0) | 2021.05.31 |
Mouse events (0) | 2021.05.31 |
Replace & Remove Elements (0) | 2021.05.31 |
Comments