Есть модальный диалог, содержимое в который подкачивается с сервера при его открытии. В содержимом может быть не только HTML, но и скрипты. Например, вот такой -
$(document).on('click', '.modal-content a.select', function(e) {
e.preventDefault();
var src = $(this).attr('href'); alert(src);
....
});
При закрытии окна диалога его содержимое очищается - $('#dialog').html('');
Если открыть, закрыть и снова открыть окно диалога, то обработчик клика будет вызван два раза! alert(src) это позволяет увидеть. Если снова закрыть-открыть, то уже три раза, и так далее.
При том, что собственно сам код уничтожается, его привязка к обработчику 'click' остается и каждый раз добавляется снова.
Да, в jQuery есть detach(). Проблема в том, что окно диалога о его внутренней жизни ничего не знает и detach() вызвать не сможет. Есть ли другие способы удалить привязку к событию, когда его функция-обработчик физически удаляется из DOM?