gpt4 book ai didi

javascript - 如何取消绑定(bind)元素内的所有事件

转载 作者:太空宇宙 更新时间:2023-11-04 14:09:19 25 4
gpt4 key购买 nike

我正在尝试解除绑定(bind)/关闭 一个元素内每个元素的所有事件。我试过 this解决方案,但它不起作用。唯一有用的是 $(document).add('*').off(); 但这不是我需要的。

我做了一个简短的例子,但是有更多的元素和事件。
为什么这段代码不起作用?

$(document).ready(function() {

$(document).on("click", "#contentWithEvents button", function() {
console.log("Clicked");
});

$(document).on("mouseenter", "#contentWithEvents li div", function() {
console.log("Hovered");
});

$(document).on("click", "#unbind", function() {
contentToBeReplaced = $("#contentWithEvents");
contentToBeReplaced.find("*").each(function() {
$(this).off();
});
});

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<header></header>

<main id="contentWithEvents">

<button>Click event</button>
<button>Click event</button>
<button>Click event</button>

<ul>
<li><div>Hover event</div></li>
<li><div>Hover event</div></li>
</ul>

</main>

<button id="unbind">Unbind all events</button>

<footer></footer>

最佳答案

与其使用 $(document) 委托(delegate)文档事件,不如使用包含父 ID 和元素类型的选择器直接委托(delegate)元素。这将有助于使用 off() 取消绑定(bind)这些元素的事件。 (特定事件:.off('mouseenter') 或所有事件:.off())

$(document).ready(function() {

$("#contentWithEvents button").on("click", function() {
console.log("Clicked");
});

$("#contentWithEvents li div").on("mouseenter", function() {
console.log("Hovered");
});

$("#unbind").on("click", function() {
contentToBeReplaced = $("#contentWithEvents");
contentToBeReplaced.find("*").off();
});

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<header></header>

<main id="contentWithEvents">

<button>Click event</button>
<button>Click event</button>
<button>Click event</button>

<ul>
<li>
<div>Hover event</div>
</li>
<li>
<div>Hover event</div>
</li>
</ul>

</main>

<button id="unbind">Unbind all events</button>

<footer></footer>

关于javascript - 如何取消绑定(bind)元素内的所有事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56934334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com