jQuery でイベント ハンドラーを削除する最適な方法は? 質問する

jQuery でイベント ハンドラーを削除する最適な方法は? 質問する

がありますinput type="image"。これは、Microsoft Excel のセルのメモのように機能します。誰かがこれとペアになっているテキスト ボックスに数字を入力するとinput-image、 のイベント ハンドラーを設定しますinput-image。次に、ユーザーが をクリックするとimage、データにメモを追加するための小さなポップアップが表示されます。

私の問題は、ユーザーがテキスト ボックスにゼロを入力したときに、input-imageのイベント ハンドラーを無効にする必要があることです。次のことを試しましたが、効果はありませんでした。

$('#myimage').click(function { return false; });

ベストアンサー1

jQuery ≥ 1.7

jQuery 1.7以降ではイベントAPIが更新され、下位互換性のために.bind()引き続き.unbind()利用可能ですが、推奨される方法はの上()/オフ()関数。以下は、

$('#myimage').click(function() { return false; }); // Adds another click event
$('#myimage').off('click');
$('#myimage').on('click.mynamespace', function() { /* Do stuff */ });
$('#myimage').off('click.mynamespace');

jQuery < 1.7

サンプル コードでは、以前のクリック イベントを上書きするのではなく、画像に別のクリック イベントを追加するだけです。

$('#myimage').click(function() { return false; }); // Adds another click event

両方のクリック イベントが発生します。

すでに述べたように、unbind を使用してすべてのクリック イベントを削除できます。

$('#myimage').unbind('click');

単一のイベントを追加して、それを削除する場合 (追加された可能性のある他のイベントは削除せずに)、イベント名前空間を使用できます。

$('#myimage').bind('click.mynamespace', function() { /* Do stuff */ });

自分のイベントだけを削除するには:

$('#myimage').unbind('click.mynamespace');

おすすめ記事