カテゴリ: 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
TypeScript
TypeScriptのEnum(列挙型)の使い方を解説!初心者でもわかる定数のグループ化
New3
TypeScript
TypeScriptとは?JavaScriptとの違いと導入メリットを徹底解説
New4
TypeScript
TypeScriptでExpressを初期化する方法!初心者向けバックエンド開発環境構築の完全ガイド
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptの現在日時を取得する方法を完全ガイド!初心者でもわかるDate.now()とnew Date()
No.3
Java&Spring記事人気No3
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.4
Java&Spring記事人気No4
TypeScript
TypeScriptで使える基本の型一覧(string, number, booleanなど)
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptでクエリパラメータを取得する方法を完全解説 URLSearchParamsの使い方を初心者向けに丁寧に説明
No.6
Java&Spring記事人気No6
TypeScript
TypeScriptで最初に覚えたい基本構文まとめ
No.7
Java&Spring記事人気No7
TypeScript
TypeScript学習におすすめの無料教材・リファレンスサイト【初心者向け】
No.8
Java&Spring記事人気No8
TypeScript
TypeScriptとEmotion/styled-componentsの型付けパターン徹底解説!React開発の基本