undelegate()

このエントリーをはてなブックマークに追加

undelegate()はdelegate()で指定されたイベントを取り除くメソッドです。

次のサンプルではbutton要素がclickされた際にdivにデリゲートされたclickイベントを取りのぞいています。

$("div").delegate("button","click",function(){
	alert("ok");
	$("div").undelegate();
});

sample

引数を指定することで特定のセレクタにバインドされた特定のイベントのみ取り除く事も可能です。次のサンプルではbuttonをクリックした際にbuttonに指定されているmouseoverイベントのみを取り除いています。

$("div").delegate("button","click",function(){
	alert("click!");
	$("div").undelegate("button","mouseover");
}).delegate("button","mouseover",function(){
	alert("mouseover!");
});

sample

引数で指定するイベントはスペース区切りで複数のイベントが指定可能です。

引数に取り除くイベントハンドラーを指定すること可能です。次のサンプルではclickされた際にclick1が指定されたイベントハンドラーのみを取り除いています。

var click1 = function(){
	alert("click1!");
}
var click2 = function(){
	alert("click2!");
}
$("div")
	.delegate("button","click",click1)
	.delegate("button","click",click2)
	.delegate("button","click",function(){
		$("div").undelegate("button","click",click1)
});

sample

jQuery 1.6よりdelegate時に指定された名前空間を元にイベントの削除が可能になりました。(次のサンプルでは「nameA」が名前空間)

//delegate
$("div").delegate("button", "click.nameA", foo);
//undelegate
$("div").undelegate(".nameA");
jQuery 1.4.2での追加/変更

undelegate()はjQuery 1.4.2 で追加されたメソッドです。

jQuery 1.4.3での追加/変更

jQuery 1.4.3よりセレクタには複数のイベントを指定可能になりました。

jQuery 1.6.0での追加/変更

jQuery 1.6.0より名前空間の指定が可能になりました。

参考URL

.undelegate() | jQuery API Documentation

登録日 : 2013年04月06日 最終更新日 : 2013年4月6日

同じカテゴリー(Events)のエントリー

検索

スポンサードリンク

バージョン

リファレンス