MooTools: удаление элементов - PullRequest
1 голос
/ 02 февраля 2010

Допустим, у меня есть два элемента на странице. Один - это div, а другой - его ребенок, ахор. Допустим, я добавил событие к этому якору через anchor.addEvent('click', ...). Если я установлю .innerHTML = '' div, будет ли удалено / утилизировано / утилизировано событие click, связанное с якорем?

Ответы [ 3 ]

1 голос
/ 06 февраля 2010

В соответствии с MooTools API : destroy() - это метод, который:

очищает элемент от всех его дочерних элементов, удаляет и одеваетЭлемент.Полезно для очистки памяти перед загрузкой страницы.

Я подозреваю, что то, что случится с якорями, удаленными при удалении их родительских элементов с помощью innerHTML = '', будет зависеть от браузера.

jQueryпредлагает метод empty(), я предполагаю, что другие библиотеки, вероятно, также предлагают методы.Вы можете увидеть довольно хорошее обсуждение этой темы в Удаление элемента из DOM .

1 голос
/ 02 февраля 2010

Это зависит от того, есть ли у вас ссылка на экземпляр DOM "привязки". Если это так, он останется в памяти, пока все ссылки не будут удалены.

Пример теста:

var parent = new Element('div');
var child = new Element('div', {
    events : {
        click : function() { 
            alert('child clicked'); 
        }
    }
});
child.innerHTML = 'child content';
parent.appendChild(child);
document.body.appendChild(parent);
parent.innerHTML = 'parent content';
document.body.appendChild(child);
0 голосов
/ 03 февраля 2010
  1. ИМХО, вы должны использовать empty () вместо innerHTML = "".
  2. Ссылка останется, как сказал @nemisj, но она будет "плавающей" и бесполезной. Я сделал несколько тестов здесь: контрольный пример , может быть, вы найдете интересным.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...