选择性地分离事件处理程序

Detach event handlers selectively

本文关键字:程序 事件处理 分离 选择性      更新时间:2023-09-26

我有一个html richText编辑器。我的代码结构是这样的:

function richTextEditor(div)
{
   var self=this;
   self.instanceIdentifier=Math.floor(Date.now());
   //Richtext editor creation logic 
    
   $(document).on('click.'+self.instanceIdentifier,function()
    {
      //some logic
    })
   self.destroy=function()
   { 
     //delete all properties of self
     // detach all listeners
     $(document).off('click.'+self.instanceIdentifier) ;
   }
}

我们的应用程序是单页应用程序,在不同的窗格中打开了多个richtexteditor实例。当与此对应的节点已被删除时,我需要销毁该实例。Destroy应删除该实例所附加的所有事件处理程序。

到目前为止,用于唯一标识处理程序的Date.now()正在工作,但我认为必须有一些优雅的方法来做到这一点。

   var div1=$('#notes')[0];
   var editorInstance1=new richTextEditor(div1);
   //remove is not a valid jquery event, its just for illustration
   // I am getting remove event from another library
   $(div1).on('remove',function(){
       editorInstance1.destroy();
    })

请建议这样做是否正确。

您想要的是GUID或UUID。这个问题有一个很好的答案在这里