2011-12-19 59 views
2

一直在应用程序上工作,并且由于它变得太大,我一直在想方法来改善内存管理,因为应用程序主要运行在Javascipt上。所以每次点击一个导航项时,我都会调用jquery空白,然后通过ajax显示html。例如:

//$.ajaxSetup(); called before this 
//$this is the attached element 
$.ajax({success:function(data){ 
    $this.empty().html(data.output).fadeIn(400); 
    //more javascript stuff like loading tinymce or jquery ui 
}}); 

这是否足以防止内存泄漏?我不完全确定这是空的,但我假设它会删除该div中的所有DOM元素以及任何其他对象和事件?顺便说一句。你可以在这里找到应用程序http://webproposalgenerator.com/http://webproposalgenerator.com/demo

任何有关提高性能/安全性或任何反馈的提示将不胜感激。

+1

你有没有内存泄漏或这只是一个学术讨论?您可以在现代浏览器中使用开发人员工具来检查内存泄漏。如果您不确定'.empty()'是什么,那么这里是[documentation](http://api.jquery.com/empty/)。它删除子元素及其数据和事件处理程序以及元素本身。 – kubetz 2011-12-19 21:54:48

+0

什么浏览器显示看起来像内存泄漏的行为? – Corbin 2011-12-19 22:00:04

+0

目前还没有任何内存泄漏,我只是想对它进行规划,因为我正在重做大部分核心框架。我知道在PHP中,unset()是尝试清除内存块时要走的路,是否有javascipt/jquery等价物? – 2011-12-19 22:28:41

回答

6

$.fn.empty应该足够了,它会删除与元素相关的所有数据和事件,然后删除元素。它还调用.widget("destroy")在所有基于这些元素定义的基于jquery-ui widget.js的小部件上。

同样重要的是要注意,jQuery的$.fn.html方法调用给定元素上$.fn.empty()追加HTML之前,因此,如果您正在使用$.fn.html,你不必叫$.fn.empty

1

其实我的猜测是,。暗示着html。无论如何,我也不确定这是否属实。对于perforamnce部分:根据jqfundamentals出色的书,推荐最佳实践来添加内容,而元素来自DOM中的.detach()。试图锁定代码寻求建议,但没有找到它。不错的网站btw

相关问题