IE中的jQuery DOM操作内存泄漏

IE中的jQuery DOM操作内存泄漏,jquery,memory-leaks,dom-manipulation,Jquery,Memory Leaks,Dom Manipulation,在进行DOM操作时,我们在IE上发现了严重的内存泄漏。基本上,我们是这样做的: function updateTable(){ $.get('table.jsp', {}, function(data){ $('#dataTableContainer').empty().html($(data).find('#dataTable')); setTimeout(updateTable, 1000); }); } 每秒钟重复一次这个方法。从我们所能看

在进行DOM操作时,我们在IE上发现了严重的内存泄漏。基本上,我们是这样做的:

function updateTable(){
    $.get('table.jsp', {}, function(data){
        $('#dataTableContainer').empty().html($(data).find('#dataTable'));
        setTimeout(updateTable, 1000);
    });
}
每秒钟重复一次这个方法。从我们所能看到的情况来看,jQuery1.7.1的这种方法每10秒就会泄漏大约1Mb的内存(旧版本的情况更糟)

我们做错什么了吗?我们尝试了stackoverflow(Ex.)中已经发布的几种解决方案,但都没有成功。

尝试以下方法:

function updateTable(){
    $.get('table.jsp', function(data){
        var dt = $(data).find('#dataTable').html()
        $('#dataTableContainer').html(dt);
        setTimeout(updateTable, 1000);
    });
}
接收字符串或函数,而不是像您现在这样的查询对象。html方法将替换内容,因此无需使用该方法。

尝试以下方法:

function updateTable(){
    $.get('table.jsp', function(data){
        var dt = $(data).find('#dataTable').html()
        $('#dataTableContainer').html(dt);
        setTimeout(updateTable, 1000);
    });
}

接收字符串或函数,而不是像您现在这样的查询对象。html方法替换了内容,因此不需要使用该方法。

我认为这不是问题所在,但我的印象是
$().html()
$().empty().append()相同。您是否发现情况并非如此(或者您调用
.empty()
函数是否还有其他原因)?我们可能必须查看其余的相关代码。@Patricia-jQuery的版本在这个问题上是正确的。出于某种原因,我将其理解为jQuery ui版本。我想我需要检查一下眼睛!事实上,我知道这是一句冒犯性的话,因为当我对它进行评论时,没有内存泄漏。我不认为这是问题所在,但我的印象是
$().html()
$().empty().append()相同。您是否发现情况并非如此(或者您调用
.empty()
函数是否还有其他原因)?我们可能必须查看其余的相关代码。@Patricia-jQuery的版本在这个问题上是正确的。出于某种原因,我将其理解为jQuery ui版本。我想我需要检查一下眼睛!事实上,我知道这是一句冒犯的话,因为当我评论它时,没有内存泄漏。