JavaScript中是否存在任何OnDestroy / OnDispose事件,或者在普通JS或Mootools中是否存在任何已知的自定义实现?让我们说当我从DOM中销毁/删除元素时,我想调用console.log(' bye')。与此jQuery solution
类似的内容答案 0 :(得分:4)
虽然你可以做到这一点,但这样做是不切实际的。
first - destroy
- 事件用正在销毁的元素的上下文填充,此时在事件cb期间,它将被删除并且GCd可能被删除。
第二,IE6,7,8,其中Element原型是只读的,元素通过$
/ document.id
在本地添加方法 - 意味着需要先加载修饰的方法在DOM中访问任何内容。
第三,如果说el.parentNode.innerHTML = ''
或者它们通过原始的js /替代方式被删除,这实际上不会触发。从这个意义上来说,它不是一个真正的观察者,只需捕获2种方法。
(function(){
// old methods
var destroy = Element.prototype.destroy,
dispose = Element.prototype.dispose;
// redefine them and fire the events before calling old protos.
[Element, Elements].invoke('implement', {
destroy: function(){
this.fireEvent('destroy');
return destroy.apply(this, arguments);
},
dispose: function(){
this.fireEvent('dispose');
return dispose.apply(this, arguments);
}
});
}());
var foo = document.getElement('.foo');
foo.addEvents({
dispose: function(){
alert('we are not in the dom now');
}
});
foo.dispose();