2011-12-19 3 views
2

Работал над приложением, и поскольку он становится слишком большим, я подумываю о том, как улучшить управление памятью, поскольку приложение работает в основном на Javascipt. Поэтому каждый раз, когда нажимается элемент навигации, я вызываю jquery empty, а затем показываю html через ajax. ex:

//$.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 
}}); 

Этого достаточно, чтобы предотвратить утечку памяти? Я не совсем уверен, что пустой, но я предполагаю, что он удаляет все элементы DOM внутри этого div вместе с любыми другими объектами и событиями? Кстати. Вы можете найти приложение здесь http://webproposalgenerator.com/ и http://webproposalgenerator.com/demo.

любые советы по улучшению производительности/безопасности или любой обратной связи на всех были бы весьма признательны.

+1

У вас есть утечки памяти, или это только академическая дискуссия? Вы можете использовать инструменты разработчика в современных браузерах для проверки утечек памяти. Если вы не знаете, что делает '.empty()', то здесь [документация] (http://api.jquery.com/empty/). Он удаляет дочерние элементы и их данные и обработчики событий и сам элемент. – kubetz

+0

В каком браузере (-ях) отображается поведение, которое выглядит как утечка памяти? – Corbin

+0

Утечек памяти еще нет, я просто хотел планировать это, так как я переделываю основную структуру ядра. Я знаю в PHP, unset() - это способ пойти, пытаясь очистить блоки памяти, есть ли эквивалент javascipt/jquery? –

ответ

6

$.fn.empty должно быть достаточно, оно удаляет все данные и события, связанные с элементами, а затем удаляет элементы. Он также вызывает .widget("destroy") на всех виджетах jquery-ui widget.js, которые определены для этих элементов.

Важно также отметить $.fn.html его метод JQuery называет $.fn.empty() по данному элементу перед добавлением HTML, поэтому, если вы используете $.fn.html, вы не должны вызывать $.fn.empty

1

на самом деле мое предположение было. html. empty в любом случае, также я не уверен, что это правда. для перфориментальной части: согласно jqfundamentals отличной книгой рекомендуемая рекомендация по добавлению контента, в то время как элемент находится в .detach() от DOM. пытался закрепить код за советом, но не нашел его. nice site btw

Смежные вопросы