言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

JavaScript辞典

  1. トップページ
  2. JavaScript辞典
  3. HTML要素.removeEventListener()

HTML要素.removeEventListener() 対応: DOM Level 2(2000)

HTML要素.addEventListener()』で登録したイベントリスナーを解除するメソッドです。登録時と同じイベント名・関数の参照を指定する必要があります。

構文

element.removeEventListener("イベント名", 関数);

引数

引数概要
イベント名解除するイベントの名前を文字列で指定します。『click』『input』『scroll』などがあります。
関数HTML要素.addEventListener()』で登録した時と同じ関数の参照を指定します。

サンプルコード

<button id="btn">クリック</button>
<button id="removeBtn">リスナー解除</button>
<p id="output"></p>
var btn = document.querySelector("#btn");
var removeBtn = document.querySelector("#removeBtn");
var output = document.querySelector("#output");
var count = 0;

// 解除するためには名前付き関数を使用します。
function handleClick() {
	count++;
	output.textContent = count + "回クリックされました";
}

// イベントリスナーを登録します。
btn.addEventListener("click", handleClick);

// 「リスナー解除」ボタンでイベントリスナーを解除します。
removeBtn.addEventListener("click", function() {
	btn.removeEventListener("click", handleClick);
	output.textContent = "リスナーが解除されました";
});

無名関数では解除できない

『HTML要素.addEventListener()』で無名関数を使って登録したリスナーは、『HTML要素.removeEventListener()』で解除できません。見た目が同じコードでも、無名関数は毎回別のオブジェクトとして生成されるため、同じ関数の参照とは見なされないためです。

// この書き方では解除できません。
btn.addEventListener("click", function() {
	console.log("クリック");
});

// 同じ内容の関数を指定しても別のオブジェクトのため一致しません。
btn.removeEventListener("click", function() {
	console.log("クリック");
}); // 解除されません。

概要

『HTML要素.removeEventListener()』は登録済みのイベントリスナーを解除するメソッドです。登録時に使用した関数と同じ参照を渡す必要があるため、解除が必要なリスナーは必ず名前付き関数で登録してください。

リスナーを1回だけ実行したい場合は、『HTML要素.removeEventListener()』を使わずに『HTML要素.addEventListener()』の第3引数に『{ once: true }』を指定する方法が簡潔です。

メモリリークを防ぐためにも、不要になったリスナーは適切に解除することが大切です。特にHTML要素がDOMから削除される際に登録済みのリスナーが残っていると、メモリが解放されない場合があります。

対応ブラウザ

Chrome Chrome
49 以降
全バージョンで対応しています
Firefox Firefox
57 以降
全バージョンで対応しています
Safari Safari
18 以降
全バージョンで対応しています
Edge Edge
80 以降
11 以前 ×
IE IE
11 以降
5 以前 ×
Opera Opera
48 以降
6 以前 ×
iOS Safari iOS Safari
18 以降
全バージョンで対応しています
Android Browser Android Browser
37 以降
4 以前 ×
Chrome Android Chrome Android
36 以降
17 以前 ×
Firefox Android Firefox Android
79 以降
3 以前 ×

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。