jquery - 删除元素时是否需要分离 jQuery 中的事件

标签 jquery dom jquery-events

我有一个使用动态选项卡的 UI,因此可以将内容加载到选项卡中,然后可以关闭选项卡并将内容从页面中删除。

当我将内容加载到选项卡中时,我使用 jQuery 将许多事件附加到元素。

当我从页面中删除这些元素时会发生什么? jQuery 需要知道吗?

另外,如果我多次附加一个事件有什么关系吗?例如,在选项卡加载中,我可能会使用 $('.submitButton').click(...) 等类选择器附加一个事件。但我可能已经打开了其他选项卡,这些选项卡已经附加了 SubmitButton 事件。在这种情况下,我将重新附加同一事件。这有什么问题吗?

最佳答案

如果您使用 jQuery 方法 .remove().empty(),它们将清除使用 jQuery 分配的所有事件(和其他数据)。

来自remove()的文档:

In addition to the elements themselves, all bound events and jQuery data associated with the elements are removed.

对于empty():

To avoid memory leaks, jQuery removes other constructs such as data and event handlers from the child elements before removing the elements themselves.

如果您使用 native API 方法进行删除,则所有数据都会保留。所以最好使用 jQuery 方法。

关于jquery - 删除元素时是否需要分离 jQuery 中的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3186246/

相关文章:

javascript - Bootstrap : Call or Select Tabs via URL

javascript - 在日期选择器插件中隐藏其他月份的日期?

java - 在 DOM 中搜索特定文本

java - 避免将 XML 命名空间添加到输出消息

javascript - Angular : How to handle two-part directive

javascript - 第一个 element.focus() 之后未触发元素焦点监听器

jQuery/CSS iPhone - 点击事件

jquery - 如何在使用 jQuery 隐藏输入字段后正确定位 HTML5 表单验证错误消息?

javascript - jQuery 事件性能 : Bind a single event on parent or individual events on each child?

jQuery ui 多选捕获选择/单击事件