Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqueryremove函数真的删除了Dom元素吗?_Javascript_Jquery_Html_Dom - Fatal编程技术网

Javascript jqueryremove函数真的删除了Dom元素吗?

Javascript jqueryremove函数真的删除了Dom元素吗?,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我真的想知道jQuery函数是否真的从DOM中删除元素。 首先,我看了看,但答案并不令人信服。 当我注意到我仍然能够操作调用了remove函数的元素时,我遇到了这个问题。 我的代码: <div id="container"> <div id="div"> This is a div </div> </div> var div = $('#div'); $('#div').remove(); $('#containe

我真的想知道jQuery函数是否真的从DOM中删除元素。
首先,我看了看,但答案并不令人信服。
当我注意到我仍然能够操作调用了remove函数的元素时,我遇到了这个问题。

我的代码:

<div id="container">
    <div id="div">
        This is a div
    </div>
</div>

var div = $('#div');
$('#div').remove();
$('#container').append(div);

这是一个div
var div=$(“#div”);
$('#div')。删除();
$(“#容器”).append(div);
注意:我的问题不是如何解决这个问题?但我想了解这里发生了什么

实际上,这段代码没有从dom中删除#div,但是如果我将任何数据设置为#div,它就会丢失。我现在对remove函数的行为感到非常困惑。有人能解释一下吗?

我确信div变量不仅仅是dom元素的克隆,而是对它的引用,因为当我操作div变量时,(比如
div.html('something')
),dom中的div会得到更新。
还是我错了?

remove()
确实从DOM中删除了元素

但是,在您的示例中,元素已缓存在内存中,因为您将其分配给
div
变量。因此,您仍然可以使用它,并再次附加它,并且它仍将包含原始文件所做的所有事件


如果你说的是对的,为什么我会如此放松绑定到div的数据

如果选中,您将看到它调用内部
cleanData
函数,该函数删除事件并清除元素的
数据
缓存。这就是你丢失信息的原因

如果要从DOM中删除元素,但保留这些元素,请改用
detach()


这里有一把小提琴来显示差异:

必须删除指定的变量:

delete div;

是的,可能会解开谜团:))只要有东西引用那个对象(存储在变量中),它就会从DOM中删除,但不会从内存中删除。@Tats_innit Dude,你真的认为我以前没读过吗???@skafandri Supman!只是一个评论,兄弟,没问题!B-@skafandri:但是有很多人不会在你的鞋子里读到它。。。div=对Dom的引用!他从DOM中删除这些项。因此,如果他试图读取div-他应该得到div->referenting to null!如果你说的是对的,那么为什么我会如此放松绑定到div的数据?@skafandri:数据保存在一个单独的对象中,而不是DOM元素本身或其jQuery包装器上。最有可能的情况是,如果您
删除
某个jQuery确定它永远消失了,并且删除了它为它保留的数据以减少内存使用。请记住,jQuery不知道您的页面是否是一个创建和删除数千个元素的富应用程序,因此必须小心。@skafandri我已经更新了我的答案,并为您做了解释。我确信div变量不仅仅是dom元素的克隆,而是对is的引用,因为当我操作div变量时,(比如div.html('something'))DOM中的div会被更新。还是我错了?