jQuery-selectable вызывает утечки памяти.Как я могу предотвратить это?Есть что-то, чего мне не хватает?
У меня есть сложное веб-приложение, которое использует несколько экземпляров jquery UI-selectable.Я использовал sIEve для отслеживания утечек памяти, и я заметил, что количество утечек равно числу экземпляров, выбираемых пользовательским интерфейсом.
Я написал простую тестовую страницу, в которой выбираемый выбирается как можно меньше.В sIEve это вызвало 1 утечку памяти (div # b).
Вот HTML-код:
<!DOCTYPE html>
<html>
<head><title>test leaks with selectable</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery-ui.js"></script>
<script type="text/javascript" src="testLeaks.js"></script>
</head>
<body>
<div id="b"></div>
</body>
</html>
А вот testleaks.js:
function begin() {
$('#b').selectable();
}
function unloadCleanup() {
$('#b').selectable('destroy');
$('#b').remove();
}
$(window).unload(unloadCleanup);
$(document).ready(begin);
Я включил unloadCleanup
и обработчик .unload
только после того, как увидел утечку.Не имеет значения с этим или без него.
Это, кажется, доказательство того, что простая активация jquery-select вызывает утечку памяти.
Затем я изменил testleaks.html, добавив в него sub-div:
<div id="b">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
В sIEve я загрузил страницу и выбрал один из подразделов.Число полученных утечек составило 11 - по одному для самого выбираемого элемента div и по одному для каждого выбранного.
Выбор более одного дочернего элемента не увеличил количество утечек.Число утечек составило 11, если были выбраны какие-либо дочерние элементы, и 1, если никакие дочерние элементы не были выбраны.
Использование jQuery 1.6.4 и jQuery-UI 1.8.16 с возможностью выбора , диалоговое окно и указатель даты и темой легкости.
Есть ли что-то, что я делаю неправильно