Post

이벤트 위임(Event Delegation)

(1) 사전 설정

HTML

  <body>
    <div class="contents-box"></div>
  </body>

 

SCSS

body {
  background-color: black;
  .contents-box {
    background-color: white;
    width: 150px;
    height: 150px;
    margin: 10% auto;
  }
}

 

JavaScript

const contents = document.querySelector(".contents-box");
setTimeout(function () {
  contents.innerHTML = `<div class="title">테스트 텍스트</div>`;
}, 3000);

 

ON BROWSER

아무것도 없는 빈 contents-box에 3초뒤 "테스트 텍스트" 가 나타나도록 설정

 

 

 

(2) 동적으로 생성된 개체에 querySelector???

JavaScript

const contents = document.querySelector(".contents-box");
const title = document.querySelector(".title");
setTimeout(function () {
  contents.innerHTML = `<div class="title">테스트 텍스트</div>`;
}, 3000);
title.addEventListener("click", function () {
  alert("테스트 텍스트를 클릭함");
});
console.log(title);

 

ON BROWSER

querySelector&addEventListener로는 동적으로 생성된 개체에 이벤트를 걸 수가 없음

 

 

 

(3) .target을 활용한 이벤트 위임(Event Delegation)

JavaScript

const contents = document.querySelector(".contents-box");
setTimeout(function () {
  contents.innerHTML = `<div class="title">테스트 텍스트</div>`;
}, 3000);
contents.addEventListener("click", function (e) {
  if (e.target.closest(".title")) {
    alert("테스트 텍스트를 클릭함");
  }
});

 

 

ON BROWSER

그러나 부모 개체에 이벤트를 위임한 상태에서 e.target으로 최하단 태그를 붙잡은 뒤, .closest를 활용해 특정해내면 이벤트를 발생시킬 수 있게 된다. 

'JavaScript related' 카테고리의 다른 글

JavaScript reduce  (0) 2023.02.01
JavaScript beforeunload  (0) 2023.02.01
JavaScript target & currentTarget  (0) 2023.01.31
JavaScript destructuring  (0) 2023.01.30
JavaScript How to Insert Text  (0) 2023.01.27
▲ top