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)
删除声明没有明显效果.
是否有必要让浏览器发布一些这些东西?
您可以尝试更改最后一个子级的 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)