我目前正在使用 jQuery mobile,并且有一个关于 DOM 一般如何工作的快速问题。目前,我将事件绑定(bind)到通过 AJAX 加载的页面上的元素(页面注入(inject)到 DOM 中)。
当页面转换时,根据jQuery Mobile docs , jQuery mobile 从 DOM 中删除页面。
我是否需要担心解除 jQuery 事件与 DOM 中不再存在的元素的绑定(bind)?当我通过 ajax 更改页面时,我是否确信 GC 会清理我的绑定(bind)?
TLDR:当与 jQuery 绑定(bind)的元素 [ $(...).on("click"...);
] 从 DOM 中删除时,我们还需要担心事件的解绑吗?或者 JavaScript 是否自动知道删除这些事件?
最佳答案
当您更改页面时,浏览器将清除上一页中的所有内容 - 您不必担心这一点。
在 jQuery 中,如果您使用 jQuery 的 .remove()
方法从 DOM 中取出某些内容,那么 jQuery 将为您清理。如果您不使用 .remove()
并手动删除 DOM 元素,那么某些 jQuery 状态可能无法正确清理(例如 .data()
例如信息)。
关于jQuery Mobile、DOM 和事件解除绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9475941/