dom_dom0500_010

ネストしたリスナーで、同一要素内の他のハンドラも含めて即座に止めたい場合は ( A ) を使う。単に親要素への伝播だけを止めたい場合は ( B ) を使う。

解答

A: event.stopImmediatePropagation()
B: event.stopPropagation()

解説

stopImmediatePropagation() は同一ターゲット上でこれ以降に登録されたリスナーの実行も止める。stopPropagation() は段階の進行(親へ伝播)だけを止め、同一要素の他リスナーは実行され得る。

使用例(サンプルコード)

[ html ]

<button id="x">押す</button>
<script>
x.addEventListener("click", e => { console.log("1つ目"); e.stopImmediatePropagation(); });
x.addEventListener("click", e => { console.log("2つ目は呼ばれない"); });
document.body.addEventListener("click", () => console.log("親には届かない?"), true);
</script>