如果我将一个JavaScript事件绑定到一个元素,然后删除该元素,事件会发生什么
If I bind a JavaScript event to an element, then delete the element, what happens to the event?
假设我有一个元素:
<section id="container">
<div id="curious">hey, there</div>
</section>
然后,在加载DOM之后,我将一个事件绑定到元素,如下所示:
$('#curious').click(function (){
alert('Are you curious?');
});
稍后,元素被删除:
$('#container').html('');
绑定事件发生了什么?它也被删除了吗?它在附近徘徊吗?清理它是个好做法吗?
根据.html()
方法的jQuery文档,删除了事件处理程序。
这样做是为了防止内存泄漏。
当
.html()
用于设置元素的内容时,该元素中的任何内容都将被新内容完全替换。此外,jQuery在用新内容替换子元素之前,从子元素中删除其他构造,如数据和事件处理程序。
同样,当使用.empty()
/.remove()
方法时也是如此:
所有绑定的事件和与元素相关联的jQuery数据都将被删除。
如果要保留数据和事件侦听器,请改用.detach()
方法。.detach()
方法本质上与.remove()
方法相同,只是它保留了与已删除元素相关联的所有jQuery数据(这意味着您可以在分离同一元素后附加该元素,并且事件仍将被绑定)。
相关文章:
- React应用程序:道具在下一个事件后更新
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 全局屏幕span onclick触发一个事件javascript
- 在一个“事件”之后触发一个事件;喜欢“;
- 在离子2中,有任何方法可以将涡旋动量作为一个事件来检测
- 完整日历在多个资源上添加一个事件
- TinyMCE 将另一个事件添加到粗体和斜体按钮
- jQuery触发另一个事件中的事件
- 试图使一个事件依赖于另一个事件,并使用jquery自定义事件传递数据
- 存储一个事件处理程序中的变量以供另一个事件处理器使用
- 当表单验证失败时,我将如何最好地处理下一个事件
- 正在创建一个事件以更改鼠标悬停时的图片
- 当一个单元格被编辑时,是否有一个事件触发,但值没有'不要改变
- JavaScript一次性在多个元素上注册一个事件类型
- 如何在点击时发生另一个事件后使用localscroll
- Vanilla Js:在一个事件中开始一段时间的循环,然后用第二个事件打破它?('mouseover'启
- 取消除最后一个事件之外的所有事件,
- 鼠标滚轮按压-描述了一个事件的名称,以及如何使用jQuery侦听它
- Javascript开始处理下一个事件,然后第一次完成
- 在Jquery中将标志从一个事件传递到另一个事件