1. ホーム
  2. jquery

[解決済み] jQueryのイベントハンドラを削除する最良の方法?

2022-03-17 17:40:34

質問内容

私は input type="image" . これは、マイクロソフト・エクセルのセルノートのような役割を果たします。誰かがテキストボックスに数字を入力すると、この input-image と対になるイベントハンドラを設定します。 input-image . そして、ユーザーが image そして、データにメモを追加するための小さなポップアップが表示されます。

問題は、ユーザーがテキストボックスにゼロを入力した場合、その時点で input-image のイベントハンドラです。以下のように試してみましたが、効果がありません。

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

解決方法は?

jQuery ≥ 1.7

jQuery 1.7 以降では、イベント API が更新されました。 .bind() / .unbind() は後方互換性のためにまだ利用可能ですが、望ましい方法は on() / オフ() 関数を使用します。これで下のようになります。

$('#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');