jQuery cluetip内存泄漏

jQuery cluetip内存泄漏,jquery,memory-leaks,cluetip,Jquery,Memory Leaks,Cluetip,我一直在跟踪我的web应用程序中的内存泄漏 动态删除和添加具有cluetip工具提示的锚点 附件,我想我可能已经把问题缩小到 cluetip中的主闭包,用于将cluetip连接到节点(线 32:var link=this,$this=$(this);) 我一直在使用一个修改过的 jquery 1.3.2版本,具有以下修复程序,允许 要删除的cluetip元素。但是,锚节点变为 孤立,因为在cluetip节点之后仍然有一个对它们的引用 被移除了吗 如果我将cluetip源代码的第32行更改为以下内

我一直在跟踪我的web应用程序中的内存泄漏 动态删除和添加具有cluetip工具提示的锚点 附件,我想我可能已经把问题缩小到 cluetip中的主闭包,用于将cluetip连接到节点(线 32:var link=this,$this=$(this);)

我一直在使用一个修改过的 jquery 1.3.2版本,具有以下修复程序,允许 要删除的cluetip元素。但是,锚节点变为 孤立,因为在cluetip节点之后仍然有一个对它们的引用 被移除了吗

如果我将cluetip源代码的第32行更改为以下内容进行测试 目的: var link=$('br'),$this=$('br')

锚被释放,但“br”节点开始构建

因此,我想知道是否有人知道我如何解决这个问题 问题或者如果我只是没有正确地释放资源

附加的脚本和源代码:

jQuery修改。在第1247行之后,在 关闭大括号():

this.outerHTML=“”

示例脚本:

<html> 
<head> 
    <link rel="stylesheet" type="text/css" href="jquery.cluetip.css"/> 


    <script type="text/javascript" src="jquery-1.3.2.js"></script> 
    <script type="text/javascript" src="jquery.cluetip.js"></script> 


    <script type="text/javascript"> 
            $(document).ready(function() { 
                    setInterval(resetCluetip, 1000); 
            }); 


            function resetCluetip() { 
                    $('a').each(function() { 
                            $(this).cluetip('destroy'); 
                            $(this).unbind().remove(); 
                    }); 


                    $('#cluetip*').unbind().empty(); 


                    $('body').html('<a href="#" class="contextMenu" title="title|body">anchor one</a><br>'); 


                    $('a').each(function() { 
                            $(this).cluetip({splitTitle: '|'}); 
                    }); 
            } 
    </script>
</head>
<body>
</body>
</html> 

$(文档).ready(函数(){
设置间隔(resetCluetip,1000);
}); 
函数resetCluetip(){
$('a')。每个(函数(){
$(this.cluetip('destroy');
$(this.unbind().remove();
}); 
$(“#cluetip*”).unbind().empty();
$('body').html(“
”); $('a')。每个(函数(){ $(this.cluetip({splitTitle:'|'}); }); }
以下是一些评论:

  • 首先,这个脚本对我来说毫无意义。。。每秒重置cluetips和页面内容。如果通过ajax获得更新,为什么不使用新信息更新title属性,然后刷新cluetip或设置cluetip属性
    ajaxCache:false
  • 在对象上使用
    .remove()
    应该将其从DOM中删除,并解除任何引用的绑定,因此不需要使用
    .unbind().remove()
    .unbind().empty()
  • 通配符不能以这种方式使用id(“#cluetip*”)一种更好的方法是使用选择器属性过滤器,如
    $(“div[id*=“cluetip”])
  • 我无法复制内存泄漏

脚本只是一个测试容器,用于测试我的生产应用程序如何突出问题。在我的生产应用程序中,我们有锚定标记,表示用户可以添加或删除的文档,因此,当添加或删除它们时,需要添加或删除cluetip。不幸的是,由于导致泄漏的闭包(),remove似乎无法删除对锚的引用。您使用什么版本的I.E.来测试此功能?由于I.E.6和7无法处理此类泄漏,感谢wildards上的提醒。其他cluetip对象似乎用我现在的方式得到了清理。但这很可能是因为我正在清理id为“cluetip”的父对象。