[JS]イベントBubbling、キャプチャ、委任
8232 ワード
イベントバッファ
サブエレメントにイベントが発生すると、イベントはそのエレメントから親エレメントに渡されます.
Defaultに適用されます.
document.querySelector('li').addEventListener('click', () => console.log('li 클릭'));
document.querySelector('ul').addEventListener('click', () => console.log('ul 클릭'));
document.querySelector('div').addEventListener('click', () => console.log('div 클릭'));
result :
li 클릭
ul 클릭
div 클릭
イベントのキャプチャ
サブエレメントにイベントが含まれている場合、イベントが親エレメントからサブエレメントに渡される方法はイベントbublingとは逆です.
<div>
<ul>
<li>예시</li>
</ul>
</div>
<script>
document
.querySelector("li")
.addEventListener("click", () => console.log("li 클릭"));
document
.querySelector("ul")
.addEventListener("click", () => console.log("ul 클릭"), { capture: true });
document
.querySelector("div")
.addEventListener("click", () => console.log("div 클릭"));
</script>
result :
li 클릭
ul 클릭
div 클릭
委任イベント
委任イベントとは、複数の子がある場合、子にイベントハンドラを別々に設定するのではなく、親にイベントハンドラを設定して子を制御することです.これらのモデルのメリットは次のとおりです.
<ul onclick="alert(event.type + '!')">
<li>첫번째</li>
<li>두번째</li>
<li>세번째</li>
</ul>
li
にはそれぞれハンドルが取り付けられておらず、上位ユニットul
のみが取り付けられていることが確認された.必ず活動を任せるわけではないので、状況に応じてよく使いましょう.リファレンス
Reference
この問題について([JS]イベントBubbling、キャプチャ、委任), 我々は、より多くの情報をここで見つけました https://velog.io/@console/JS-이벤트-버블링-캡처링위임テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol