Отсоединять обработчики событий выборочно
Итак, у меня есть 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();
})
Пожалуйста, предложите, если это правильный путь.
Спасибо за ваше драгоценное время.
1 ответ
Решение
То, что вы хотите, это GUID или UUID. На этот вопрос есть отличный ответ.