undelegate()
undelegate()はdelegate()で指定されたイベントを取り除くメソッドです。
次のサンプルではbutton要素がclickされた際にdivにデリゲートされたclickイベントを取りのぞいています。
$("div").delegate("button","click",function(){
alert("ok");
$("div").undelegate();
});
引数を指定することで特定のセレクタにバインドされた特定のイベントのみ取り除く事も可能です。次のサンプルではbuttonをクリックした際にbuttonに指定されているmouseoverイベントのみを取り除いています。
$("div").delegate("button","click",function(){
alert("click!");
$("div").undelegate("button","mouseover");
}).delegate("button","mouseover",function(){
alert("mouseover!");
});
引数で指定するイベントはスペース区切りで複数のイベントが指定可能です。
引数に取り除くイベントハンドラーを指定すること可能です。次のサンプルでは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)
});
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)のエントリー
- change()
- blur()
- unload()
- unbind()
- submit()
- select()
- scroll()
- mouseleave()
- mouseenter()
- keyup()
- keypress()
- keydown()
- focusout()
- focusin()
- focus()
- die()
- delegate()
- dblclick()
- bind()
- undelegate()
- error()
- off()
- resize()
- mouseup()
- mousemove()
- mousedown()
- mouseout()
- mouseover()
- click()
- on()
- load()
- ready()