π μ΄λ²€νΈ λ²λΈλ§ - Event Bubbling
μ΄λ²€νΈ λ²λΈλ§μ νΉμ νλ©΄ μμμμ μ΄λ²€νΈκ° λ°μνμ λ ν΄λΉ μ΄λ²€νΈκ° λ μμμ νλ©΄ μμλ€λ‘ μ λ¬λμ΄ κ°λ νΉμ±μ μλ―Έν©λλ€. μ΄λ μ΄λ²€νΈκ° κ°μ₯ νμμ μμμμ μμνμ¬ μμ μμλ‘ μ νλλ λ°©μμ
λλ€.
<body> <div class="layer1"> <div class="layer2"> <div class="layer3"> </div> </div> </div> </body> <script> var divList = document.querySelectorAll('div'); divList.forEach(function(div) { div.addEventListener('click', logEvent); }); function logEvent(event) { console.log(event.currentTarget.className); } </script>
ν΄λ¦ν κ²μ΄ κ°μ₯ νμμ div νκ·ΈμΈ "layer3"μ΄λΌλ©΄, μ½μμλ "layer3 -> layer2 -> layer1" μμλ‘ μΆλ ₯λ©λλ€. μ΄λ μ΄λ²€νΈκ° νμμμ μμ μμλ‘ μ νλλ νΉμ±μ 보μ¬μ€λλ€.
π μ΄λ²€νΈ μΊ‘μ³ - Event Capture
μ΄λ²€νΈ μΊ‘μ³λ μ΄λ²€νΈ λ²λΈλ§κ³Όλ λ°λ λ°©ν₯μΌλ‘ μ΄λ²€νΈκ° μ νλλ λ°©μμ
λλ€. μ΄λ μ΄λ²€νΈκ° μ΅μμ μμμμ μμνμ¬ κ°μ₯ νμμ μμλ‘ ν₯νλ λ°©μμ
λλ€.
<body> <div class="layer1"> <div class="layer2"> <div class="layer3"> </div> </div> </div> </body> <script> var divList = document.querySelectorAll('div'); divList.forEach(function(div) { div.addEventListener('click', logEvent, true); }); function logEvent(event) { console.log(event.currentTarget.className); } </script>
π stopPropagation()
stopPropagation() λ©μλλ μ΄λ²€νΈμ μ νλ₯Ό μ€μ§μν€λ μν μ ν©λλ€. λ§μ½ μ΄λ₯Ό μ¬μ©νλ©΄ μ΄λ²€νΈκ° νμ¬ μμμμ λ μ΄μ μμ λλ νμλ‘ μ νλμ§ μμ΅λλ€.
function logEvent(event) { event.stopPropagation(); console.log(event.currentTarget.className); }