【jQuery】.on()によってバインドされた関数を全て解除する。

メモ。

「.off()」関数を用いる。

以下のようなHTMLがあったとする。

<div class="append">
<button id="btn" type="button">Click</button>
<button id="off" type="button">Off Event</button>
</div>

スクリプトは以下の通り。

<script>
$(function(){
	// 既存、追加問わず全ての#btnに対してイベントがバインドされる
	$(document).on('click', '#btn', function(){
		$('.append').append('<button id="btn" type="button">Appended</button>')
	});
	$('#off').click(function(){
		// #btnにバインドされたイベントが全て解除される
		$(document).off('click', '#btn');
	})
})
</script>

Clickボタンを押すとボタンが追加される。追加されたボタンに関してもメソッドがバインドされているため、クリックすれば更にボタンが追加される。
ここでOff Eventボタンをクリックすると、上記コードの9行目でボタンにバインドされている関数が全て解除され、クリックしても反応しなくなる。

リアルタイムで関数の紐付けを操作したい時にとても便利。