⊗jsPmOEBUs 428 of 505 menu

JavaScriptにおけるイベントバブリング停止の適用

1つの親要素の中にボタンといくつかのブロックがあるとします:

<div id="parent"> <button>click me</button> <div id="block"> text </div> </div>

要素への参照を変数に取得しましょう:

let parent = document.querySelector('#parent'); let button = document.querySelector('button'); let block = document.querySelector('#block');

ブロックは最初は非表示にしておきます:

#block:not(.active) { display: none; }

ボタンをクリックするとブロックが表示されるようにします:

button.addEventListener('click', function() { block.classList.add('active'); });

そして、親要素のどこかをクリックするとブロックが非表示になるようにします:

parent.addEventListener('click', function() { block.classList.remove('active'); });

しかし、予期せぬ驚きが待っています:ボタンは親要素の内部にあるため、ボタンのクリックは同時に親要素のクリックも意味するのです。つまり、最初にブロックが表示された後、イベントのバブリングによって親要素のハンドラが動作し、ブロックが非表示になってしまいます。

ここでバブリングをキャンセルする機能が役に立ちます:ボタンのクリック時にバブリングをキャンセルし、親要素がこのクリックに反応しないようにすることができます。

説明されたタスクの正しい動作を自分で実装してください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否