【发布时间】:2015-10-21 05:10:22
【问题描述】:
当元素被翻译出视口并且不会再次进入时,我是否应该使用 jQuery(或纯 JS,如果这样更快)动态删除它?这会提高内存使用率或性能吗?或者我应该忽略它以被垃圾收集器删除,因为它做得最好(如果它本质上是这样做的)?
编辑:为了更清楚,这里有一个实用的解释:
假设我有 100 个圈子的 translateX 动画:
$("circle").each(function(i, el){
$(el).animate({translateX: -100});
});
现在所有的圆圈都在视口之外(因为 SVG 的坐标系从左上角的 0,0 开始)。我的代码是否应该在其中删除,如下所示:
$("circle").each(function(i, el){
$(el).animate({translateX: -100}, {complete: function()
$(el).remove();
});
});
??
【问题讨论】:
-
您是在画布或类似的视图空间上制作动画吗?
-
在动画编码结束时添加
.remove()会不会更容易? -
答案将取决于您是否尝试提高动画帧速率(可能不需要删除,因为浏览器无论如何都会排除它们)或内存使用情况(是的,如果它是长时间运行的动画或存在有很多圈子)。最靠谱的答案是自己试试看。
标签: javascript performance animation svg