Метод destroy

Метод destroy предназначен для полного удаления экземпляра Tooltipster с элемента. После его вызова плагин перестаёт существовать: удаляются все привязанные события, очищаются внутренние данные, а также удаляется созданная DOM-разметка тултипа.

Этот метод используется в ситуациях, когда тултип больше не нужен — например, при динамическом обновлении интерфейса, удалении элементов из DOM или повторной инициализации плагина с новыми параметрами.


Сигнатура метода

$('.element').tooltipster('destroy');

Метод не принимает аргументов и применяется к уже инициализированному элементу.


Что происходит при вызове destroy

После вызова метода выполняется ряд внутренних операций:

  • удаляются все обработчики событий (mouseenter, mouseleave, click и др.)
  • очищаются данные, сохранённые через $.data
  • удаляется HTML тултипа из DOM
  • элемент возвращается в исходное состояние (до инициализации Tooltipster)

Важно понимать, что метод полностью «разрушает» экземпляр, а не просто скрывает тултип.


Отличие от метода hide

Метод hide лишь скрывает тултип, сохраняя его в памяти и позволяя повторно показать:

$('.element').tooltipster('hide');

В отличие от него, destroy:

  • удаляет тултип из DOM
  • освобождает память
  • делает невозможным дальнейшее управление тултипом без повторной инициализации

Пример базового использования

// Инициализация
$('.element').tooltipster({
    content: 'Подсказка'
});

// Удаление тултипа
$('.element').tooltipster('destroy');

После выполнения второй строки попытка вызвать любой метод Tooltipster на этом элементе приведёт к ошибке или игнорированию.


Повторная инициализация после destroy

После удаления тултипа допускается повторная инициализация:

$('.element').tooltipster('destroy');

$('.element').tooltipster({
    content: 'Новая подсказка',
    theme: 'tooltipster-light'
});

Это полезно при смене конфигурации, когда проще полностью пересоздать экземпляр, чем обновлять параметры.


Использование при динамическом DOM

В приложениях с динамическим контентом (SPA, AJAX-подгрузка) метод destroy помогает избежать утечек памяти.

Пример:

function removeItem(selector) {
    $(selector).tooltipster('destroy');
    $(selector).remove();
}

Без вызова destroy остаются «висячие» обработчики и ссылки на удалённые элементы.


Проверка существования Tooltipster перед уничтожением

Вызов destroy на неинициализированном элементе может вызвать ошибки. Для безопасной работы применяется проверка:

if ($('.element').hasClass('tooltipstered')) {
    $('.element').tooltipster('destroy');
}

Класс tooltipstered автоматически добавляется при инициализации.


Уничтожение группы элементов

Метод можно применять сразу к коллекции:

$('.items').tooltipster('destroy');

Tooltipster корректно обработает каждый элемент.


Взаимодействие с делегированными тултипами

При использовании делегирования:

$('body').tooltipster({
    selector: '.dynamic-element'
});

Метод destroy должен вызываться на контейнере:

$('body').tooltipster('destroy');

Иначе делегированный механизм останется активным.


Особенности при использовании тем и плагинов

При использовании дополнительных модулей Tooltipster (например, анимаций или тем):

  • все подключённые расширения также корректно очищаются
  • пользовательские стили не удаляются, так как они находятся в CSS

Типичные ошибки

1. Повторный вызов методов после destroy

$('.element').tooltipster('destroy');
$('.element').tooltipster('show'); // ошибка

После уничтожения экземпляр отсутствует.


2. Попытка удалить неинициализированный элемент

$('.element').tooltipster('destroy'); // может вызвать проблему

Решение — предварительная проверка.


3. Игнорирование destroy при удалении DOM

$('.element').remove(); // плохо

Корректный вариант:

$('.element').tooltipster('destroy').remove();

Практический сценарий: обновление контента

При обновлении данных тултипа:

function updateTooltip(selector, newContent) {
    var $el = $(selector);

    if ($el.hasClass('tooltipstered')) {
        $el.tooltipster('destroy');
    }

    $el.tooltipster({
        content: newContent
    });
}

Такой подход гарантирует чистую инициализацию без накопления старых данных.


Работа с большим количеством элементов

При массовом удалении тултипов:

function clearAllTooltips() {
    $('.tooltipstered').tooltipster('destroy');
}

Использование селектора .tooltipstered позволяет быстро найти все активные экземпляры.


Поведение при активном тултипе

Если тултип открыт в момент вызова destroy:

  • он будет немедленно удалён
  • анимации завершатся принудительно
  • события закрытия не всегда вызываются (зависит от версии)

Роль в управлении жизненным циклом

Метод destroy является ключевым элементом жизненного цикла Tooltipster:

  1. Инициализация (init)
  2. Показ/скрытие (show, hide)
  3. Обновление (content, option)
  4. Уничтожение (destroy)

Корректное использование последнего этапа обеспечивает стабильность приложения и предотвращает утечки ресурсов.


Когда использовать destroy

  • перед удалением элементов из DOM
  • при полной смене конфигурации тултипа
  • при очистке интерфейса
  • при переходах между страницами в SPA
  • при отписке от событий

Метод выполняет роль финального шага в управлении Tooltipster и гарантирует корректное завершение работы плагина.