2011-12-19 62 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

相關問題