8

いくつかのコールバックがあるWebページに要素があります

// First callback
$("#element").click(fn1);

// Second callback
$("#element").click(fn2);

// Definitions
function fn1(){console.log("1");}
function fn2(){console.log("2");}

jQueryによってトリガーされたコールバックのリストからfn2のみを削除する方法はありますか?関数とグローバル変数の中に「if」を追加できることは知っていますが、それは私が探しているものではありません。

4

5 に答える 5

4

まだ誰も名前空間について言及していないのは興味深いことです。その理由はありますか?

イベントを添付するときに、名前を付けることができます。代わりに$(elem).on('click', fn)、クリックイベントに名前空間を追加します。$(elem).on('click.namespaced', fn)

バインドを解除すると、名前空間も使用して、その正確なイベントのバインドを解除できます。 $(elem).off('click.namespaced')

これは、イベント関数をインラインで定義する場合に最も実用的です。

名前空間でできるもう1つのことは、1回の呼び出しで名前空間内のすべてのイベントタイプのバインドを解除することです。$(elem).off('.namespaced')

于 2013-03-12T10:08:53.343 に答える
4

unbind関数の 2 番目のパラメーターは、バインドを解除するハンドラーを指定します。

$("#element").unbind("click", fn2);

作業例: http://jsfiddle.net/k73Nx/

于 2013-03-12T09:34:00.793 に答える
1

ここでは構文に注意してください。他の回答は非常に緩いです。

使用する場合:

$('#element').on('click',function() {
 //callback code
});

次に、次を使用する必要があります。

$('#element').off('click');

使用できませ

$('body').off('click','#element',function() { }); 

また

$(document).off('click','#element',function() { }); 

これは、最初にイベントをドキュメントや本文ではなく #element にバインドしたためです。

于 2013-03-12T09:41:36.980 に答える
0

use .off

 $("#element").off("click",fn2);

working fiddle

于 2013-03-12T09:35:47.417 に答える
0

アンバインドを使用: http://api.jquery.com/unbind/

例:

$(document).unbind('click', fn2);
于 2013-03-12T09:34:48.743 に答える