动态添加和删除 DOM 元素是否会造成内存泄漏?
Will adding and removing a DOM element dynamically create memory leaks?
我正在向 DOM 添加 div 并在其上执行一些动画。动画结束后,我再次从 DOM 中删除 div,如下所示:
$div = $("<div />", {id:"flashMsg", class: className, html:msg}).prependTo(bazingaApp.app.rightPanel);
$div.fadeIn("slow",function(){
$(this).delay(5000).slideUp(1000, function () {
$(this).remove();
});
});
这会造成任何内存泄漏吗?
如果 $div
是超出范围的变量,则不会。如果 $div
变量保存在内存中,它就会执行。如果只有一个 $div
变量,那将是一个 非常非常小的 泄漏。如果 $div
被重复创建和保存(例如,在一个被闭包捕获的函数中),这个微小的泄漏将会累积起来。很可能,它很好,但我们需要更多的上下文才能确定。
为避免这种可能性,您可以完全删除该变量:
$("<div />", {
id:"flashMsg",
class: className,
html:msg
})
.prependTo(bazingaApp.app.rightPanel)
.fadeIn("slow",function(){
$(this).delay(5000).slideUp(1000, function () {
$(this).remove();
});
});
我正在向 DOM 添加 div 并在其上执行一些动画。动画结束后,我再次从 DOM 中删除 div,如下所示:
$div = $("<div />", {id:"flashMsg", class: className, html:msg}).prependTo(bazingaApp.app.rightPanel);
$div.fadeIn("slow",function(){
$(this).delay(5000).slideUp(1000, function () {
$(this).remove();
});
});
这会造成任何内存泄漏吗?
如果 $div
是超出范围的变量,则不会。如果 $div
变量保存在内存中,它就会执行。如果只有一个 $div
变量,那将是一个 非常非常小的 泄漏。如果 $div
被重复创建和保存(例如,在一个被闭包捕获的函数中),这个微小的泄漏将会累积起来。很可能,它很好,但我们需要更多的上下文才能确定。
为避免这种可能性,您可以完全删除该变量:
$("<div />", {
id:"flashMsg",
class: className,
html:msg
})
.prependTo(bazingaApp.app.rightPanel)
.fadeIn("slow",function(){
$(this).delay(5000).slideUp(1000, function () {
$(this).remove();
});
});