Archives by date

You are browsing the site archives by date.

【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行目でボタンにバインドされている関数が全て解除され、クリックしても反応しなくなる。

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

 

【jQuery】後から追加された要素に対してイベントをバインドする。

めも。

.on()関数を用いる。

例。

下記のようなHTMLがあったとして。

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

クリックするとボタンを追加するスクリプトを書く。
この際追加されたボタンに対しても、メソッドをバインドしたい場合は、以下のように記述すればよい。

<script>
$(function(){
	$(document).on('click', '#btn', function(){
		$('.append').append('<button id="btn" type="button">Appended</button>')
	});
})
</script>

過去のバージョンでは「.live()」が存在していたが、「jQuery1.9rc1」より「.live()」は削除されたため、代わりに「.on()」を用いる。
※.live()関数とは引数が異なるので注意されたし。