0

我有一个页面,我在其中使用 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%。

我将不胜感激任何帮助。

4

2 回答 2

0

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

http://forum.jquery.com/topic/performance-issues-using-ajax-async

于 2010-03-04T21:39:01.967 回答
0

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

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

于 2010-03-04T21:39:50.530 回答