javascript - jQuery - 当您委托(delegate)事件处理程序时,它是否也会自动从不再匹配的元素中删除自身?

标签 javascript jquery html handler

假设以下结构

<div id="wrapper">
    <div></div>
    <div class="selected"></div>
    <div></div>
    <div></div>
    <div class="selected"></div>
</div>

我想为所有 .selected 元素分配一个委托(delegate)事件处理程序,以便在选择新元素时,它们会自动接收该处理程序。

$("div#wrapper").on("click", "div.selected", function() {
    //do magic
});

现在,每次选择一个新的 div 时,它都会自动接收处理程序。

但是,如果我取消选择一个div(删除.selected类),它也会自动删除处理程序吗?

最佳答案

正确——你的代码

$("div#wrapper").on("click", "div.selected", function() {
    //do magic
});

应理解为:“当 div#wrapper 中发生点击时,如果(且仅当)它位于 div.selected 元素上,则运行此函数”

换句话说,您的事件处理程序实际上绑定(bind)到 div#wrapper,而不是绑定(bind)到其中的 div.selected 元素。因此,您可以根据需要添加或删除 div.selected,委托(delegate)处理程序将根据需要自动触发。

关于javascript - jQuery - 当您委托(delegate)事件处理程序时,它是否也会自动从不再匹配的元素中删除自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25144329/

相关文章:

javascript - Angular js 中的单击文本区域框

对象的 Javascript 点对象键

javascript - 使用 jQuery 验证至少 1 个文件输入已完成

jquery - 如何使用 jQuery 或 PHP 每 3 分钟异步保存一次数据

javascript - 在 CKEditor 5 的自定义构建中导出 ClassicEditor

javascript - 为固定的 100% 高度 div 创建可滚动内容

jquery - slideDown 不适用于带有 flex 显示的响应式切换

html - 使图像高度适合屏幕

Javascript将单选按钮添加到DOM中的对话框

c# - 旋转表格单元格中的文本