0

我有一个简单的页面,它由一个包含三个表jQuery UI progressbars和一个 ajax 调用的表组成。

ajax 调用一个空的 php 文件,成功后我销毁并重新创建我的进度条。

它看起来很简单,但运行它会导致内存泄漏IE7Chrome尽管 Chrome 处理得更优雅)。

这是我的代码:

<script type="text/javascript" src="jQuery/js/jquery-1.3.1.js"></script>
<script type="text/javascript" src="jQuery/js/plugins/jquery-ui-1.6rc4.min.js"></script>
<link rel="stylesheet" type="text/css" href="jQuery/css/ui.all.css" />

<script type="text/javascript">
$(function(){
    timed();    
});

function timed()
{
    $.ajax({
        url: "index.php",
        success: function(msg){
            $(".progressbar").progressbar("destroy").progressbar();
        }
    });

    setTimeout("timed()",1000);
}

<table> 
<tbody>
    <tr> 
        <td>
          <div class="progressbar"></div>
        </td>
        <td>
          <div class="progressbar"></div>
        </td>
        <td>
          <div class="progressbar"></div>
        </td>
    </tr> 
</tbody>

关于我在这里缺少的任何想法?

我试过在我的 Success 函数$("*").unbind();的行之前添加。$(".progressbar")

4

2 回答 2

0

你为什么要破坏然后重建它?将进度值重置为零并让它不理会,直到您以后再次需要它,这不是更简单吗?如果您特别不希望它可见,您甚至可以 .hide() 它。

于 2009-02-05T17:27:31.243 回答
0

我想我要做的就是在应用程序启动时创建进度条,克隆它,并在完成处理后将其添加到我的模板中。这从本质上将内存使用减慢到爬行(每 4-5 次刷新大约 4k)而不是当前(每次刷新大约 100 到 300 k)。

于 2009-02-05T21:51:21.460 回答