Частые ошибки при инициализации

При работе с библиотекой Tooltipster одной из наиболее частых причин некорректного отображения подсказок является неправильная инициализация. Tooltipster требует строго соблюдения порядка и структуры кода, а также корректного выбора селекторов.

Ошибка 1. Инициализация до загрузки DOM

$('.tooltip').tooltipster();

Если данный вызов выполняется до полной загрузки DOM, то элементы с классом .tooltip ещё не существуют на странице. В результате Tooltipster не найдёт ни одного элемента и подсказки не будут отображаться.

Правильный вариант:

$(document).ready(function() {
    $('.tooltip').tooltipster();
});

Или современный способ:

$(function() {
    $('.tooltip').tooltipster();
});

Важно: Tooltipster использует jQuery, поэтому попытка инициализировать его до загрузки jQuery приведёт к ошибке Uncaught ReferenceError: $ is not defined.

Ошибка 2. Несоответствие селектора

Если в инициализации указан селектор, который не соответствует элементам на странице, подсказки не создаются.

$('.wrong-class').tooltipster(); // Элементов нет → ничего не работает

Совет: проверять селектор в консоли с помощью console.log($('.wrong-class')). Если вывод пустой — селектор неверный.

Ошибка 3. Повторная инициализация

$('.tooltip').tooltipster();
$('.tooltip').tooltipster();

Повторный вызов .tooltipster() на уже инициализированном элементе может привести к конфликтам настроек или к ошибкам в консоли.

Решение: использовать проверку через метод tooltipster('instance') перед повторной инициализацией:

$('.tooltip').each(function() {
    if (!$(this).tooltipster('instance')) {
        $(this).tooltipster();
    }
});

Ошибка 4. Передача некорректных опций

Tooltipster принимает объект с опциями, строго соблюдая структуру.

$('.tooltip').tooltipster({
    animation: 'fade',
    theme: 'tooltipster-light',
    position: 'bottom-right' // Некорректное значение
});

position не поддерживает значение 'bottom-right'. Доступные варианты: 'top', 'top-left', 'top-right', 'bottom', 'bottom-left', 'bottom-right', 'left', 'right'.

Правильный пример:

$('.tooltip').tooltipster({
    animation: 'fade',
    theme: 'tooltipster-light',
    side: 'bottom-right'
});

Ошибка 5. Конфликт CSS

Иногда подсказки не отображаются из-за того, что CSS Tooltipster не подключён или переопределён стилями страницы.

<link rel="stylesheet" href="tooltipster.bundle.min.css">

Если этот файл отсутствует или подключён после основного CSS, может нарушаться визуальное отображение подсказок.

Совет: подключать CSS Tooltipster перед пользовательскими стилями, чтобы избежать конфликтов с z-index и позиционированием.

Ошибка 6. Использование динамически добавленных элементов

$('#container').append('<span class="tooltip" title="Новая подсказка">Hover me</span>');
$('.tooltip').tooltipster();

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

Решение: инициализировать Tooltipster после добавления элемента или использовать делегирование с помощью tooltipster('content') и tooltipster('open') для динамических элементов.

Ошибка 7. Игнорирование версии jQuery

Tooltipster версии 4 и выше требует jQuery 1.7+. Использование более старой версии приводит к тому, что методы .tooltipster() просто не существуют.

<script src="https://code.jquery.com/jquery-1.6.4.min.js"></script> <!-- Ошибка -->
<script src="tooltipster.bundle.min.js"></script>

Исправление:

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="tooltipster.bundle.min.js"></script>

Ошибка 8. Несовместимость с другими плагинами

Tooltipster может конфликтовать с другими библиотеками, которые изменяют DOM элементы, на которых вызывается инициализация. Например, плагины кастомных селектов или модальные окна.

Практика: инициализировать Tooltipster после полной загрузки всех сторонних плагинов или использовать событие onReady этих плагинов для корректного вызова.

Резюме ключевых правил инициализации

  • Убедиться, что DOM загружен ($(document).ready() или $() сокращение).
  • Проверить правильность селекторов и наличие элементов.
  • Не вызывать .tooltipster() повторно без проверки instance.
  • Проверять корректность передаваемых опций.
  • Подключить CSS Tooltipster до пользовательских стилей.
  • Динамические элементы инициализировать отдельно.
  • Использовать совместимую версию jQuery.
  • Инициализация после сторонних плагинов для предотвращения конфликтов.

Эти правила минимизируют большинство ошибок при работе с Tooltipster и обеспечивают корректное отображение подсказок на странице.