Javascript 在活动元素上关闭失败

Javascript 在活动元素上关闭失败,javascript,jquery,Javascript,Jquery,我试图使用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> $

我试图使用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");
});

它的工作原理和预期的一样,但这也移除了我连接到容器上的东西。这种奇怪的行为有什么原因吗?

当您使用委托时,您绑定的是元素,而不是后代选择器

因此,您在(…上调用
$(“#container”)。并绑定到
#container
,而不是
live_btn

.off
on
live\u btn
没有意义,因为它们没有任何绑定

一种可能的解决方案是为click事件命名名称空间:

$("#container").on('click.live', 'button[id^=live_btn]' ...
$("#container").off('click.live');
$("#container").on('click.live', 'button[id^=live_btn]' ...
$("#container").off('click.live');