2

JQuery の off 関数を使用して、コンテナー内の要素に関連付けられているすべてのイベントのバインドを解除しようとしていますが、奇妙なことをしています。

私のコードは次のとおりです

<div id='container'>
<button id='test_btn'>Test</button>
<button id='live_btn_id1'>Action</button>
<button id='live_btn_id2'>Action</button>
</div>

$("#test_btn").on("click", function(){
$("#container").find("*").off();
});

$("#container").on('click', 'button[id^=live_btn]', function(event) { 
alert("hello");
});

この結果、test_btn は正常に機能しなくなりますが、「アクション」ボタンは引き続き機能します。ただし、次のようにすると:

$("#container").off();

期待どおりに機能しますが、コンテナに添付したものも削除されます。この奇妙な動作には理由がありますか?

4

1 に答える 1

1

委任を使用すると、子孫セレクターではなく、要素にバインドされます。

したがって、あなたが呼び出すと、ではなく、$("#container").on(...にバインドされます。#containerlive_btn

.offlive_btn何もバインドされていないため、onは意味がありません。

考えられる解決策は、クリック イベントの名前空間を変更することです。

$("#container").on('click.live', 'button[id^=live_btn]' ...
$("#container").off('click.live');
于 2013-01-17T06:24:12.390 に答える