有选择地分离事件处理程序
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。
我有一个 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。