カテゴリ: JavaScript 更新日: 2026/01/31

JavaScriptのイベントデリゲーションの仕組みと実践例

JavaScriptのイベントデリゲーションの仕組みと実践例
JavaScriptのイベントデリゲーションの仕組みと実践例

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

生徒

「先生、リストのボタンがいっぱいあるんですが、一つずつイベントを設定するのは大変です。何か簡単な方法はありますか?」

先生

「それならイベントデリゲーションを使うと便利です。これは親要素にイベントを設定して、子要素の操作をまとめて管理する方法です。」

生徒

「親に設定して、どうやって子を判別するんですか?」

先生

「イベントオブジェクトのtargetプロパティを使うと、どの子要素が操作されたかを簡単に特定できます。では、実際に見てみましょう!」

1. イベントデリゲーションとは?

1. イベントデリゲーションとは?
1. イベントデリゲーションとは?

イベントデリゲーションとは、親要素にイベントリスナーを設定し、子要素の操作をまとめて処理するテクニックです。通常、ボタンやリンクがたくさんある場合、個別にイベントを設定するとコードが増えますが、デリゲーションを使うと簡単に管理できます。

この方法は、DOMの階層構造とイベントの伝播(バブリング)を利用しています。子要素で発生したイベントが親要素に伝わる性質を活用するのです。

2. 基本的な仕組み

2. 基本的な仕組み
2. 基本的な仕組み

イベントデリゲーションでは、親要素にaddEventListenerでクリックや変更などのイベントを設定します。そして、イベントオブジェクトのtargetを使って、実際に操作された子要素を判別します。


const list = document.getElementById("itemList");

list.addEventListener("click", function(event) {
  const clicked = event.target;
  if(clicked.tagName === "BUTTON") {
    console.log(clicked.textContent + "がクリックされました");
  }
});

この例では、リスト内のすべてのボタンを一つのイベントリスナーで管理しています。tagNameを使ってクリックされた要素がボタンかどうかを判別しています。

3. なぜイベントデリゲーションが便利なのか

3. なぜイベントデリゲーションが便利なのか
3. なぜイベントデリゲーションが便利なのか

ボタンが10個でも100個でも、親要素に一つイベントを設定するだけで済みます。また、動的に追加される要素も自動的に対象になります。これにより、コードが簡潔になり、管理が容易になります。

さらに、イベントリスナーの数を減らすことで、ブラウザの処理効率も向上します。大規模なリストや複雑な画面で特に効果的です。

4. 実践例:動的に追加されるリストでも対応

4. 実践例:動的に追加されるリストでも対応
4. 実践例:動的に追加されるリストでも対応

例えば、新しいアイテムをリストに追加しても、イベントデリゲーションなら自動的にクリック処理が適用されます。


const addItemButton = document.getElementById("addItem");

addItemButton.addEventListener("click", function() {
  const newItem = document.createElement("li");
  const button = document.createElement("button");
  button.textContent = "新しいボタン";
  newItem.appendChild(button);
  list.appendChild(newItem);
});

このようにリストに新しいボタンを追加しても、親要素に設定されたイベントリスナーが自動で処理します。

5. 注意点とコツ

5. 注意点とコツ
5. 注意点とコツ

イベントデリゲーションを使うときは、event.targetで正確に子要素を判別することが大切です。例えば、ボタン内のアイコンなどもクリックされた場合に意図しない処理が発生することがあります。その場合はclosest()などを使って、特定の親要素を取得すると安全です。


list.addEventListener("click", function(event) {
  const button = event.target.closest("button");
  if(button) {
    console.log(button.textContent + "がクリックされました");
  }
});

6. 練習のすすめ

6. 練習のすすめ
6. 練習のすすめ

まずは簡単なリストを作り、ボタンを数個設置してイベントデリゲーションを試してみましょう。その後、新しいアイテムを追加しても動作することを確認します。こうすることで、イベントデリゲーションの仕組みと便利さを体感できます。

カテゴリの一覧へ
新着記事
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開発の基本