Я обнаружил утечку памяти в моем веб-приложении, которое
динамически удаляет и добавляет якоря, которые имеют всплывающие подсказки
прилагается, и я думаю, что я, возможно, сузил проблему до
главное закрытие в подсказке, которая прикрепляет подсказку к узлу (строка
32: var link = this, $ this = $ (this);).
Я выполняю следующий скрипт в SIEV с измененным
версия jquery 1.3.2 со следующим исправлением, которое позволяет
элементы подсказки должны быть удалены. Тем не менее, якорные узлы становятся
осиротевший, так как есть еще 1 ссылка на них после узлов подсказки
удалены?
Если я изменю строку 32 источника cluetip на следующую для тестирования
цели:
var link = $ ('br'), $ this = $ ('br');
Якоря освобождаются, но узлы 'br' начинают накапливаться.
Поэтому мне было интересно, если кто-нибудь знает, как я могу обойти это
проблема? или если я просто неправильно высвобождаю ресурсы?
Прилагаемые сценарии и источник:
jQuery модификация. После строки 1247 вставить следующее перед
закрывающая фигурная скобка (http://markmail.org/message/cfi4bvfjc3m6ww6k#query:jquery%20memory%20leak%20in%20remove%20and%20empty+page:1+mid:tapc7zt3cwl6rw4f+state:results):
this.outerHTML = "";
Пример сценария:
<html>
<head>
<link rel="stylesheet" type="text/css" href="jquery.cluetip.css"/>
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript" src="jquery.cluetip.js"></script>
<script type="text/javascript">
$(document).ready(function() {
setInterval(resetCluetip, 1000);
});
function resetCluetip() {
$('a').each(function() {
$(this).cluetip('destroy');
$(this).unbind().remove();
});
$('#cluetip*').unbind().empty();
$('body').html('<a href="#" class="contextMenu" title="title|body">anchor one</a><br>');
$('a').each(function() {
$(this).cluetip({splitTitle: '|'});
});
}
</script>
</head>
<body>
</body>
</html>