JavaScript의 이벤트 버블링 및 캡처
6751 단어 beginnersjavascriptwebdev
소개
이러한 개념을 이해하기 위해 먼저 이벤트가 무엇인지 이해합시다. MDN에 따라 정의 이벤트는 프로그래밍 중인 시스템에서 발생하는 동작 또는 발생입니다. 시스템은 이벤트가 발생할 때 일종의 신호를 생성(또는 "실행")하고 동작을 수행할 수 있는 메커니즘을 제공합니다. 이벤트가 발생하면 자동으로 실행됩니다(즉, 일부 코드 실행). 친구에게 무언가를 하라는 신호를 보내는 것과 같이 생각할 수 있습니다. 신호를 보내면 친구가 그 일을 시작합니다.
이벤트 버블링과 이벤트 캡처라는 두 가지 주요 이벤트 모델이 있습니다.
이제 하나씩 이해해 봅시다-
이벤트 버블링
이벤트 버블링은 이벤트 핸들러가 다른 요소에 중첩된 이벤트 핸들러를 호출하는 개념입니다. 버블링은 이벤트가 요소에서 실제로 발생할 때 발생합니다. 먼저 자체에서 이벤트를 처리한 다음 상위(있는 경우)에서 이벤트를 처리하고 본문과 루트 요소에 도달할 때까지 계속됩니다.
이해를 돕기 위해 예를 들어 보겠습니다.
다음은 HTML 스니펫입니다.
<div id="grandparent">
<div id="parent">
<div id="child"></div>
</div>
</div>
여기에 이벤트 리스너를 추가했습니다.
grandparent.addEventListener("click", (event) => {
console.log("Grandparent clicked.");
})
parent.addEventListener("click", (event) => {
console.log("parent clicked.");
})
child.addEventListener("click", (event) => {
console.log("child clicked.");
})
이제 하위 요소를 클릭하면 다음과 유사한 출력이 표시됩니다.
여기에서 볼 수 있듯이 이벤트는 자식에서 부모, 조부모로 트리거되므로 Bubbling 모델에서 이벤트는 모든 조상을 포함하는 가장 안쪽 요소에서 트리거됩니다. 이것은 탄산음료에서 거품이 아래에서 위로 올라가는 것과 같다고 해서 버블링이라는 이름이 붙었습니다.
이벤트 캡처
이것은 버블링의 정반대입니다. 이벤트 캡처링 모델에서 이벤트는 가장 구체적인 요소에서 시작하여 가장 구체적인 요소를 향해 아래로 흐릅니다. 이는 이벤트가 조부모에서 부모, 자식으로 트리거됨을 의미합니다.
캡처 모델을 사용하려면
true
함수의 세 번째 인수 위치에 addEventListner
를 전달해야 합니다.다음은 JS 코드 스니펫입니다.
grandparent.addEventListener("click", (event) => {
console.log("Grandparent clicked.");
}, true)
parent.addEventListener("click", (event) => {
console.log("parent clicked.");
}, true)
child.addEventListener("click", (event) => {
console.log("child clicked.");
}, true)
다음 이미지로도 두 모델을 모두 이해할 수 있습니다.
생각나는건 여기까지이고, 앞으로 더 추가할 예정입니다. 읽어 주셔서 감사합니다.
Reference
이 문제에 관하여(JavaScript의 이벤트 버블링 및 캡처), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jeetsdev/event-bubbling-and-capturing-in-javascript-3ifd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)