jQuery .remove()trigger .off()在后代元素上



所以,我知道,当我在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。

最新更新