Исходная ситуация: имеем некоторый самописный плагин, который создает виджет внутри указанного ему элементе. Функции плагина вешаются на клики создаваемых кнопок, keyup-ы создаваемых инпутов и т.п, кроме того - на ряд событий, которые происходят вне элемента плагина - например document.on('keyup')
Вызов: $('селектор').мой_плагин.(конфигурация)
Поскольку предполагается, что виджет нужно периодически уничтожать и создавать заново (с новой конфигурацией), я делаю метод с условным названием destoy
Вызов: $('селектор').мой_плагин.('destroy')
В destroy я снимаю обработчик $(document).off('keyup') и прочих "внешних" элементов. А потом делаю $('селектор *').remove();
Достаточно ли второй строки для того, чтобы не потекла память? jQuery при вызове remove убирает всё сама? Или сперва всё-таки следует снять все обработчики и с "внутренних" элементов? Напомню: хэндлеры - это функции в плагине, а события возникают на элементах, которые создал сам плагин внутри элемента. Они же и удаляются вызовом, который описан выше.
@PaulJE, не понял. $().unbind() первым аргументом ждёт тип события - почему ".PLUGIN_NAME"? Имя плагина вообще никак не может фигурировать в качестве селектора...
$this - это что?