カテゴリ: JavaScript 更新日: 2026/02/07

JavaScriptのpreventDefaultとstopPropagationの違いと使い方を徹底解説

JavaScriptのpreventDefaultとstopPropagationの違いと使い方
JavaScriptのpreventDefaultとstopPropagationの違いと使い方

先生と生徒の会話形式で理解しよう

生徒

「JavaScriptでリンクをクリックしたときにページ遷移を止めたいんですが、どうすればいいですか?」

先生

「その場合はevent.preventDefault()を使います。これはブラウザのデフォルトの動作を止めるメソッドです。」

生徒

「なるほど。他にstopPropagationというのも聞いたことがありますが、どう違うんですか?」

先生

「stopPropagation()はイベントの伝播、つまり親要素や他のイベントリスナーに伝わるのを止めるものです。動作の意味が違うので、使い分けが大切です。」

1. preventDefaultとは?

1. preventDefaultとは?
1. preventDefaultとは?

preventDefault()は、ブラウザが通常行う動作をキャンセルするためのメソッドです。リンクのクリックでページが移動する、フォームの送信でページがリロードされる、といったデフォルト動作を止めることができます。


const link = document.getElementById("myLink");

link.addEventListener("click", function(event) {
  event.preventDefault(); // デフォルトのリンク遷移を止める
  alert("リンクは押されましたが、ページは移動しません");
});

このように、リンククリックのデフォルト動作を止めつつ、自分の処理を実行できます。

2. stopPropagationとは?

2. stopPropagationとは?
2. stopPropagationとは?

stopPropagation()は、イベントが親要素や他のリスナーに伝わるのを防ぐためのメソッドです。例えば、ボタンをクリックしても親要素のクリックイベントを発火させたくない場合に使います。


const parent = document.getElementById("parentDiv");
const child = document.getElementById("childButton");

parent.addEventListener("click", () => {
  alert("親のクリックイベントが発火しました");
});

child.addEventListener("click", (event) => {
  event.stopPropagation(); // 親への伝播を止める
  alert("子のボタンがクリックされました");
});

子要素のクリックで親のイベントが実行されるのを防ぐことができます。

3. preventDefaultとstopPropagationの違い

3. preventDefaultとstopPropagationの違い
3. preventDefaultとstopPropagationの違い

ポイントは、preventDefault()は「ブラウザの動作を止める」、stopPropagation()は「イベントの伝播を止める」という点です。意味を取り違えると、意図した動作が実現できないことがあります。


const form = document.getElementById("myForm");

form.addEventListener("submit", function(event) {
  event.preventDefault();      // フォーム送信のページ遷移を止める
  event.stopPropagation();     // 親要素のsubmitイベント伝播を止める
  console.log("フォーム送信イベントをカスタム処理");
});

必要に応じて両方使うことも可能です。

4. 実際の使い分け

4. 実際の使い分け
4. 実際の使い分け

リンクやフォームなどブラウザのデフォルト動作を止めたい場合はpreventDefault()、親要素にイベントが伝わらないようにしたい場合はstopPropagation()を使います。二つはセットで使うこともありますが、意味を理解して使うことが大切です。


const link = document.getElementById("exampleLink");
link.addEventListener("click", function(event) {
  event.preventDefault();    // デフォルト動作を止める
  event.stopPropagation();   // 他のイベントへの伝播を止める
  alert("カスタム処理のみ実行されます");
});

5. イベント制御のコツ

5. イベント制御のコツ
5. イベント制御のコツ

初心者の方は、preventDefault()とstopPropagation()の意味を混同しやすいですが、ブラウザの動作を止めるか、イベントの伝播を止めるかを意識して使い分けることで、意図した挙動を簡単に実装できます。特にフォームやリンクのカスタム処理では、両方を適切に使うと便利です。

カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptローカルストレージとセッションストレージの違いを徹底解説!初心者向け保存機能ガイド
New2
JavaScript
JavaScriptのisNaN()とNumber.isNaN()の違いを理解しよう
New3
JavaScript
JavaScriptの配列型(Array)の基本と使い方まとめ
New4
Claude Code
Claude CodeでCSV読み込みと文字化け対策を相談する方法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptの比較演算子(==, ===, !=, !==)の違いを初心者向けにわかりやすく解説
No.3
Java&Spring記事人気No3
TypeScript
TypeScriptの始め方:開発環境の構築手順【初心者向け】
No.4
Java&Spring記事人気No4
Claude Code
Claude CodeでCSV読み込みと文字化け対策を相談する方法
No.5
Java&Spring記事人気No5
TypeScript
TypeScriptで「Hello World」を出力する手順と解説
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptの数値型(Number)の使い方と特徴まとめ
No.7
Java&Spring記事人気No7
TypeScript
TypeScriptでZustandの状態に型を定義するベストプラクティス
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptのスクロールアニメーションを実装する手順を初心者向けに解説!Webサイトを動きのあるページにする方法