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

Detach event handlers selectively

我有一个 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。这个问题有很好的答案here