Javascript + IMG标签=内存泄漏.有一个更好的方法吗?

Dus*_*tin 8 html javascript browser ajax jquery

我有一个网页,使用jquery接收一些产品信息,因为人们正在查看事物,然后显示最后看到的产品图像.这是一个jquery AJAX回调,看起来非常像这样:

if(number_of_things_seen > 10) {
  $('#shots li:last-child').remove();
}

$('<li><img src="' + p.ProductImageSmall + '"></li>').prependTo('#shots');
Run Code Online (Sandbox Code Playgroud)

但是,它似乎泄漏了相当多的内存.在视觉上,它做的是正确的,但足迹无限增长.

Safari的DOM检查器显示DOM是我期望它的方式,但它似乎保持对它所显示的每个图像的引用(如在任何人感兴趣的情况下在此屏幕截图中看到的).

我已经添加

$('#shots li:last-child img').remove();
Run Code Online (Sandbox Code Playgroud)

删除声明没有明显效果.

是否有必要让浏览器发布一些这些东西?

red*_*are 1

您可以尝试更改最后一个子级的 src 并看看是否会产生影响?然后您可以将该元素移动为第一个子元素

//not tested

var $list=$('#shots>li');
$list.filter(':last-child').children('img')
.attr('src', p.ProductImageSmall)
.parent()
.insertBefore( $list.eq(0) );
Run Code Online (Sandbox Code Playgroud)