Принятый ответ кажется мне неправильным. Во-первых, он не учитывает newdiv, содержащий дочерние узлы, поэтому предлагаемая процедура удаления поддерживает опасность утечек памяти через замыкания (IE). Во-вторых, из-за позиции 'newdiv = null' созданная функция немедленно уничтожает только что созданный элемент.
Я бы порекомендовал использовать функцию Дугласа Крокфорда purge для обработчика щелчков, заменив d этим.
function purge(d) {
var a = d.attributes, i, l, n;
if (a) {
l = a.length;
for (i = 0; i < l; i += 1) {
n = a[i].name;
if (typeof d[n] === 'function') {
d[n] = null;
}
}
}
a = d.childNodes;
if (a) {
l = a.length;
for (i = 0; i < l; i += 1) {
purge(d.childNodes[i]);
}
}
}