ネストしたリスナーで、同一要素内の他のハンドラも含めて即座に止めたい場合は ( 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>