You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么调用remove()移除元素后,已缓存的元素变量仍可获取内容?

现象原理说明

这个差异是jQuery对象的缓存特性和DOM树操作的分离性导致的,具体运行逻辑拆解:

  • 当执行var elem = $('#div')时,jQuery会遍历当前页面的DOM树,找到对应id的DOM节点,将其封装为jQuery对象后赋值给elem变量。此时elem已经在内存中持有了对应DOM节点的引用,这个引用不会随DOM树的后续变化自动失效。
  • 执行elem.remove()时,该方法仅会把目标DOM节点从页面的DOM树中卸载,不会删除内存中已存在的DOM节点本身,也不会清除elem中存储的节点引用。
  • 因此调用elem.text()时,本质是直接读取内存中缓存的DOM节点的文本内容,自然可以正常返回结果。
  • 而后续执行$('#div').text()时,jQuery会重新遍历当前已经修改过的DOM树查找目标节点,此时节点已经被移除,查询返回的是空jQuery对象,空对象调用text()会返回空值(你观察到的undefined实际为空白内容,表现一致)。

补充说明

如果需要在移除节点后彻底释放对应的内存,可以在调用remove()后手动将缓存的jQuery对象赋值为null即可。

内容的提问来源于stack exchange,提问作者The concise

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:36:03