Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用jQuery替换内容会导致IE8内存泄漏吗?_Javascript_Jquery_Internet Explorer 8_Jquery Events - Fatal编程技术网

Javascript 用jQuery替换内容会导致IE8内存泄漏吗?

Javascript 用jQuery替换内容会导致IE8内存泄漏吗?,javascript,jquery,internet-explorer-8,jquery-events,Javascript,Jquery,Internet Explorer 8,Jquery Events,我有一个页面,使用ajax加载信息表。加载表后,我使用jQuery在表的行上连接一些事件处理程序 用户可以从该页面刷新该表。刷新表的jQuery代码如下所示: $.post("/myurl", { id: 0}, function (d) { $("tblWrapper").html(d); //Wire events $("table tr", $("tblWrapper")

我有一个页面,使用ajax加载信息表。加载表后,我使用jQuery在表的行上连接一些事件处理程序

用户可以从该页面刷新该表。刷新表的jQuery代码如下所示:

    $.post("/myurl", { id: 0}, 
        function (d) 
        { 
            $("tblWrapper").html(d);

            //Wire events
            $("table tr", $("tblWrapper")).click(function (e) { ... });
            ...etc
        }, "text");
我注意到,在做了几次之后,当我尝试在IE8中进行任何滚动或动画时,页面的响应会非常缓慢

我的问题是,我做错了什么,使它变得越来越慢?在用新的html和新的处理程序替换之前,我可以清理旧的html/事件处理程序吗?我原以为JS引擎会自动做到这一点。也许是的,只是清理的速度太慢了,我不知道

我注意到IExplorer上的CPU时间约为50%


我非常感谢您的帮助。

这里有很好的讨论和问题的潜在解决方案:


我不确定这是否是问题所在,但您是否不断重复添加相同的行?它可能会变慢,因为表中的行越来越多


您可以执行类似$table tr.remove的操作来清除行。

No,每次都会使用ajax调用中的新html替换tblWrapper的内容。但是我不知道旧的事件处理程序是否没有得到清理,或者我在某处保留了对jquery对象的引用。我希望这种情况下有一种模式可以避免出现问题。我会尝试先使用.remove函数删除现有行,然后再重新填充内容。这将根据这个删除所有处理程序:好,听起来很有希望。我会给它一个镜头,然后发回。好的,我已经添加了删除逻辑。它没有解决问题,但它让我感觉更好:我现在看到的问题是window.resize上有一个事件处理程序,它调整了表内容的大小,并且在加载到另一个表之前需要从窗口解除绑定。谢谢