$ .empty()足够大的ajaxy应用程序吗?

时间:2011-12-19 21:43:42

标签: javascript jquery performance memory

一直在开发应用程序,因为它有点太大我想到了改善内存管理的方法,因为应用程序主要在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找到该应用。

任何提高性能/安全性或任何反馈的提示都将非常感激。

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

实际上我的猜测是。html暗示。empty无论如何,我也不确定这是真的。对于perforamnce部分:根据jqfundamentals优秀书籍,当元素位于DOM的.detach()时,添加内容是一种推荐的最佳实践。试图锁定代码以获取建议,但没有找到它。不错的网站btw