所以,情况就是这样。我有几个相同类型的对象都在监听同一个事件。每个对象的处理程序都操作 DOM 的某些部分。这些对象几乎可以在任何时候重新创建或销毁,当它们被销毁时,它们会占用它们负责的 DOM 的一部分。问题是这些对象的处理程序会在对象被销毁后继续尝试操作 DOM。
下面是我拥有的似乎可以工作的代码。但是我不关心处理程序被销毁的方式,我怀疑它可能对 jQuery 不利。有没有更好的办法?
var ID: "uniqueID",
connectEvents: function ()
{
$(someDiv).on("customEvent", this, this.eventHandler);
},
eventHandler: function (e)
{
//do some stuff to the DOM
},
destroy: function ()
{
var gridCell = this;
if (jQuery(someDiv).data("events"))
{
var handlers = jQuery(someDiv).data("events").customEvent
var handlerIndex = -1;
$(handlers).each(function (i, handler)
{
if (handler.data.ID === ID)
handlerIndex = i;
});
if (handlerIndex > 0)
{
handlers.splice(handlerIndex, 1);
}
}
//Destroy some Dom elements
}