
이벤트 리스너에는 비용이 많이 들어감
이벤트 위임을 통해 비용을 최소화 할 수 있음
각 버튼에 이벤트 리스너를 추가하여 클릭 시 alert를 띄움 : 비효율 / 고비용
기존의 이벤트 리스너를 반복문으로 처리함 : 고비용
eventListener를 요소가 아닌 부모(menu)에 받고
css에서 event를 받지 않을 요소에pointer-events: none;를 추가함🚨 비용면에서는 효율적일 수 있으나,
요소 내부에 다른 요소들에게click Event를 부여해야할 경우 복잡해질 수 있음.
btn3text를 클릭 시event.path는 아래와 같음
[div, div.menu-btn, div.menu, div.container, body, html, document, Window]따라서
e.path.find()함수를 통해서className중menu-btn가 있는지를 확인함
있을 경우clickBtnHandler를 호출함
🤔 "버튼마다 다른 이벤트를 발생시키기 위해서 어떻게 해야할까?"
html.menu-btn내에datasetattribute를 추가
data-value = "value"로 지정해놓은dataset은
target.getAttribute("data-value")혹은
target.dataset.value로 가져올 수 있음
🤔 "
document.querySelector(".menu-btn")로 처리를 하면 되지 않을까?"
.menu-btn내부의img나div등을 클릭할 시,
className은.menu-btn이 아니게 됨.따라서 내부의 모든 요소의
className을
menu-btn로 통일할 것이 아니라면 이 방법은 권장되지 않음.
Photo by Keila Hötzel on Unsplash
protect-me