カテゴリ: 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
TypeScript
TypeScriptでパスエイリアスを設定する方法!baseUrlとpathsでコードをスッキリ整理
New2
JavaScript
JavaScriptのfor文の書き方を初心者向けにやさしく解説
New3
JavaScript
JavaScriptの関数でよくあるエラーとその解決法まとめ
New4
JavaScript
JavaScriptのイベント処理でよくあるエラーとその対処法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのマウスイベントの使い方(click, mouseoverなど)
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptのtoStringとString関数の違いを初心者向けに解説
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptの純粋関数(pure function)と副作用の違いを理解しよう
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptで文字列をforループで1文字ずつ処理する方法!初心者向け解説
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptのDOMContentLoadedとloadイベントの違いを理解しよう
No.8
Java&Spring記事人気No8
TypeScript
TypeScript学習におすすめの無料教材・リファレンスサイト【初心者向け】