所以,我知道,当我在dom中的元素上执行.remove()时,它及其所有子女将被删除并标记以删除/垃圾收集。同样,所有元素的jQuery UI小部件都会触发其"销毁"方法,并且每个元素都会删除.data()空间中的所有条目。在决定清理我的DOM树的一部分时,我需要知道的是,删除实际上也明确地触发了.off(),或者我需要自己做?
例如,说我有一系列的divs:
<div id="A-1">
<div class="HasEventListener DelegatedEventBindPoint id="B-1">
<button class="CreatesDelegatedEvent" id="C-1" />
</div>
<button class="HasEventListener NonDelegatedEvent" id="B-2" />
</div>
所以,如果我执行$("#a-1")。remove(),这是否有效调用命令类似于$("。haseventlistener")。off()?
是的,它可以解开所有事件处理程序。
除了元素本身之外,所有绑定事件和与元素关联的jQuery数据都将被删除。
来源。
如果要保留事件处理程序,则可以使用detach()
。
另外,您提到...
所以,我知道当我在DOM中的元素上执行
.remove()
时,它及其所有孩子都将被删除并标记以删除/垃圾收集。
这不一定是正确的。您可能仍然提到这些元素。相反,参考计数将减少,如果达到0,则可以标记为GC。
jsfiddle。