web-dev-qa-db-ja.com

jqueryを使用してすべてのイベントをアンバインドする方法

このコードを使用してクリックイベントを削除できます。

$('p').unbind('click')

しかし、すべてのイベントを削除する方法はありますか?

jqueryにunbindAllという名前のメソッドがありますか?

ありがとう

69
zjm1126

これを行うには、パラメーターなしで .unbind() を呼び出すことができます。

_$('p').unbind();
_

ドキュメント から:

引数なしの最も単純なケースでは、.unbind()は要素に接続されているすべてのハンドラーを削除します。

92
Nick Craver

JQuery 1.7以降、 off() および on() は、イベントハンドラーをバインドおよびバインド解除するための推奨メソッドです。

したがって、要素からすべてのハンドラーを削除するには、これを使用します:

$('p').off();

または特定のハンドラーの場合:

$('p').off('click hover');

イベントハンドラーを追加またはバインドするには、次を使用できます。

$('p').on('click hover', function(e){
    console.log('click or hover!');
});
81

@jammypeachは、受け入れられている使用方法であるオンとオフについて正しいです。バインドを解除すると、奇妙な動作が発生することがあります(たとえば、実際にイベントを正しくバインド解除しません)。

本体内のすべての要素のバインドを解除するには、それらをすべて見つけ、それぞれについてクリックハンドラーをオフにします(古いバインド解除とは何ですか)。

$("body").find("*").each(function() {
    $(this).off("click");
});

このスタックオーバーフローの質問 でオフにしたイベントを保存する方法も参照してください。

1
Blue Raspberry