Достаточно ли $ .empty () для больших приложений ajaxy? - PullRequest
2 голосов
/ 20 декабря 2011

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 20 декабря 2011

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

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

1 голос
/ 20 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...