だから、ここに状況があります。同じタイプのオブジェクトがいくつかあり、それらはすべて同じイベントをリッスンしています。これらの各オブジェクトのハンドラーは、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
}