При работе с большим количеством подсказок эффективнее инициализировать их не по отдельности, а группами. Библиотека Tooltipster поддерживает применение к множеству элементов сразу через селекторы, что упрощает код и делает его более поддерживаемым.
Базовый подход — использование общего CSS-класса:
$('.tooltip').tooltipster();
Все элементы с классом .tooltip получат одинаковую
конфигурацию и поведение.
При инициализации группы можно передать общий набор опций:
$('.tooltip').tooltipster({
animation: 'fade',
delay: 200,
theme: 'tooltipster-light',
trigger: 'hover'
});
Все элементы будут использовать эти параметры, что особенно полезно при создании единообразного интерфейса.
Иногда требуется разное поведение для разных типов элементов. В этом случае используются дополнительные классы:
<span class="tooltip tooltip-info" title="Информация"></span>
<span class="tooltip tooltip-warning" title="Предупреждение"></span>
$('.tooltip-info').tooltipster({
theme: 'tooltipster-light'
});
$('.tooltip-warning').tooltipster({
theme: 'tooltipster-borderless',
animation: 'grow'
});
Такой подход позволяет комбинировать общую и частную конфигурацию.
При добавлении элементов в DOM после загрузки страницы необходимо учитывать, что они не инициализируются автоматически:
var newElement = $('<span class="tooltip" title="Новый элемент">Текст</span>');
$('body').append(newElement);
newElement.tooltipster();
Если элементы добавляются массово:
$('.tooltip').not('.tooltipstered').tooltipster();
Класс .tooltipstered автоматически добавляется
библиотекой к уже инициализированным элементам, что предотвращает
повторную инициализацию.
Tooltipster не поддерживает классическое делегирование событий напрямую, но можно реализовать отложенную инициализацию:
$(document).on('mouseenter', '.tooltip', function () {
if (!$(this).hasClass('tooltipstered')) {
$(this).tooltipster();
$(this).tooltipster('open');
}
});
Такой подход полезен при работе с динамическим контентом или при большом количестве элементов.
Иногда удобнее ограничить область действия:
$('#container .tooltip').tooltipster();
Это особенно важно в крупных приложениях, где разные части интерфейса имеют независимые настройки.
Для большей гибкости параметры можно задавать прямо в HTML:
<span class="tooltip"
title="Подсказка"
data-tooltip-theme="tooltipster-shadow">
</span>
$('.tooltip').each(function () {
$(this).tooltipster({
theme: $(this).data('tooltip-theme')
});
});
Это позволяет управлять поведением элементов без изменения JavaScript-кода.
Можно работать сразу со всей группой:
$('.tooltip').tooltipster('open');
или:
$('.tooltip').tooltipster('close');
Важно учитывать, что такие вызовы применяются ко всем элементам в выборке.
Перед повторной инициализацией рекомендуется уничтожить существующие экземпляры:
$('.tooltip').tooltipster('destroy');
$('.tooltip').tooltipster();
Это предотвращает конфликты и утечки памяти.
При работе с сотнями элементов стоит учитывать:
Групповая инициализация может включать обработчики:
$('.tooltip').tooltipster({
functionInit: function (instance, helper) {
console.log('Инициализация:', helper.origin);
}
});
Это позволяет централизованно отслеживать жизненный цикл всех элементов.
В крупных проектах часто используется обёртка:
function initTooltips(selector, options) {
$(selector).tooltipster(options);
}
initTooltips('.tooltip', {
theme: 'tooltipster-punk'
});
Такой подход повышает модульность и облегчает тестирование.
$(document).ready(function () {
$('.tooltip').tooltipster({
theme: 'tooltipster-default',
delay: 100,
animation: 'fade',
interactive: true
});
$('.tooltip-advanced').tooltipster({
theme: 'tooltipster-borderless',
trigger: 'click',
maxWidth: 300
});
});
Такой код демонстрирует разделение на базовую и расширенную группы с разным поведением.
Групповая инициализация является ключевым инструментом при работе с Tooltipster, позволяя эффективно управлять большим количеством элементов и обеспечивать консистентность пользовательского интерфейса.