如何在JS / Mootools中实现OnDestroy / OnDispose事件?

时间:2014-05-10 16:04:03

标签: javascript events mootools

JavaScript中是否存在任何OnDestroy / OnDispose事件,或者在普通JS或Mootools中是否存在任何已知的自定义实现?让我们说当我从DOM中销毁/删除元素时,我想调用console.log(' bye')。与此jQuery solution

类似的内容

1 个答案:

答案 0 :(得分:4)

虽然你可以做到这一点,但这样做是不切实际的。

first - destroy - 事件用正在销毁的元素的上下文填充,此时在事件cb期间,它将被删除并且GCd可能被删除。

第二,IE6,7,8,其中Element原型是只读的,元素通过$ / document.id在本地添加方法 - 意味着需要先加载修饰的方法在DOM中访问任何内容。

第三,如果说el.parentNode.innerHTML = ''或者它们通过原始的js /替代方式被删除,这实际上不会触发。从这个意义上来说,它不是一个真正的观察者,只需捕获2种方法。

http://jsfiddle.net/5YYyb/1/

(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();