Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
在jQuery中永久删除元素_Jquery - Fatal编程技术网

在jQuery中永久删除元素

在jQuery中永久删除元素,jquery,Jquery,当我附加一个元素,然后将其删除时,对象是否仍然存在 bg = $('<div class="dialog_bg"></div>'); $('#'+elm).append(bg); bg.remove(); bg=$(''); $('#'+elm).append(bg); bg.remove(); 怎么样?难道不能永久删除元素吗?方法只会将对象从DOM中删除,换句话说,就是将其从页面中删除。您正在询问是否要从内存中删除该对象?在这种情况下,我不认为你可以自己明确地做到

当我附加一个元素,然后将其删除时,对象是否仍然存在

bg = $('<div class="dialog_bg"></div>');
$('#'+elm).append(bg);

bg.remove();
bg=$('');
$('#'+elm).append(bg);
bg.remove();

怎么样?难道不能永久删除元素吗?

方法只会将对象从DOM中删除,换句话说,就是将其从页面中删除。您正在询问是否要从内存中删除该对象?在这种情况下,我不认为你可以自己明确地做到这一点-为什么你需要这样做?Javascript是一个很好的工具

编辑:有关更多信息,请参见。

如何:

$('div.dialog_bg').remove();

您可能已经在div中添加了一些内容,因此它不再识别它。

因此该元素将从DOM中完全删除。那很好。您的问题是如何确保元素被真正删除

对此,我将使用.parent()方法。因为如果元素从DOM中删除,它将不再有父元素。这可能比
$(“html”).has(bg)
快,因为它不必遍历整个DOM树

bg = $('<div class="dialog_bg"></div>');
$('#'+elm).append(bg);

bg.remove();

if(bg.parent().length == 0) {
   // removed succesfully
} else {
   // still somewhere in the dom
}

// tells the garbage collector to free the memory because there's no way to access the element anymore
bg = null;
bg=$('');
$('#'+elm).append(bg);
bg.remove();
if(bg.parent().length==0){
//成功移除
}否则{
//还在dom的某个地方
}
//告诉垃圾收集器释放内存,因为无法再访问该元素
bg=null;

您的代码应该从DOM中删除元素。元素仍然存在于变量“bg”中,但不存在于DOM中。您可以设置bg=null;因此JS垃圾收集器将删除它。如果该元素没有从DOM中删除,那么代码中还有其他错误。看起来该元素已从DOM中删除。。但是,如果我将对象“bg”放在if语句中,它将返回true,那么如何在jQuery中检查元素是否已被删除?可能有不同的方法,但可以使用
has()
方法。请尝试
$(“html”).has(bg)
-如果返回的对象的长度为0,则它不在页面上。因此,
if($(“html”).has(bg).length==0)表示if不存在。这是唯一也是最快的方法吗?好的。。但是接下来我如何检查(在jquery中)对象是否有到DOM的“链接”?您需要删除对该节点的所有引用,以允许执行从内存中释放该节点的工作。好的。。但是,难道没有一种方法可以同时做到这两个方面吗?从DOM中删除元素,然后将变量设置为NULL(释放内存)?$('.dialog_bg')是什么意思?我在考虑字符串中的“.”它将选择带有类的元素对话框“.”表示类。