DOMイベントにおける event.preventDefault() と event.stopPropagation() は、イベント処理の流れを制御するための重要なメソッドです。両者は似ているように見えますが、目的と作用範囲が異なります。以下で詳しく説明します。
1. event.preventDefault()
event.preventDefault()
概要
-
既定の動作(ブラウザが本来行う動作)をキャンセルするためのメソッドです。
-
イベントの伝播(キャプチャリングやバブリング)には影響を与えません。
使用例
-
リンク(
<a>タグ)のクリック時にページ遷移を止める。 -
フォーム送信時にページリロードを防ぐ。
2. event.stopPropagation()
event.stopPropagation()
概要
-
イベントの伝播(親要素や子要素へのイベントバブリング/キャプチャリング)を止めるメソッドです。
-
ただし、要素自体の既定の動作は止めません。
使用例
-
入れ子の要素にクリックイベントが設定されている場合、内側で処理して外側に伝わらないようにする。
この場合、inner をクリックしても outer のイベントは発火しません。
3. preventDefault() と stopPropagation() の違い
preventDefault() と stopPropagation() の違い| メソッド | 役割 | 影響 |
|---|---|---|
preventDefault() |
要素本来の既定動作をキャンセル | ページ遷移、フォーム送信などを止める |
stopPropagation() |
イベントの伝播を停止 | 親や子のイベントリスナーに届かなくする |
4. 両方を使う場合
実際の開発では 両方を同時に使う ケースもあります。
例えば、フォームの送信ボタンをクリックした時に、送信動作を止めてカスタム処理だけを行い、さらに他の親要素にイベントが伝わらないようにするケースです。
✅ まとめ
-
event.preventDefault()→ ブラウザの「既定の動作」を止める。 -
event.stopPropagation()→ イベントの「伝播」を止める。 -
目的が違うため、必要に応じて使い分け、または併用する。
ChatGPT5 生成日:2025/09/11