Библиотека Tooltipster предоставляет гибкий инструмент для создания всплывающих подсказок с возможностью тонкой настройки поведения. Одной из ключевых задач при работе с всплывающими элементами является управление их видимостью при взаимодействии с пользователем. Часто требуется, чтобы подсказка автоматически закрывалась при клике вне её области. Tooltipster реализует это через специальные настройки и события.
trigger и его
рольДля контроля открытия и закрытия тултипов используется опция
trigger. По умолчанию она может иметь значения:
hover – открытие при наведении курсора.click – открытие при клике.custom – управление тултипом вручную через методы
API.Чтобы включить закрытие по клику вне тултипа, важно использовать
click или custom, так как
hover не предусматривает такой функционал
автоматически.
$('.tooltip-element').tooltipster({
trigger: 'click',
interactive: true
});
Пояснение ключевых опций:
interactive: true – делает тултип
интерактивным, позволяя взаимодействовать с содержимым (кнопки, ссылки,
формы) без его закрытия при клике внутри.trigger: 'click' – открывает тултип по
клику, что упрощает настройку закрытия вне области.Tooltipster позволяет реализовать закрытие тултипа при клике вне его
области через опцию functionBefore или
глобальные события документа. Один из распространённых подходов:
$('.tooltip-element').tooltipster({
trigger: 'custom',
interactive: true,
functionReady: function(instance, helper) {
$(document).on('click.tooltipsterClose', function(e) {
if (!$(e.target).closest(helper.tooltip).length &&
!$(e.target).closest(helper.origin).length) {
instance.close();
}
});
},
functionAfter: function(instance, helper) {
$(document).off('click.tooltipsterClose');
}
});
Разбор работы кода:
trigger: 'custom' – ручное управление
тултипом через API.functionReady – срабатывает, когда
тултип открыт. В этот момент добавляется обработчик клика по
документу.closest – гарантирует, что
клик произошёл не по тултипу и не по
элементу-источнику.instance.close() – закрывает
тултип.functionAfter – срабатывает после
закрытия тултипа и удаляет обработчик, предотвращая утечки памяти и
множественные срабатывания.sideClick и triggerCloseTooltipster версии 4+ содержит встроенные параметры для удобного закрытия:
sideClick: true – закрывает тултип при
клике вне его области автоматически.triggerClose: { click: true, scroll: false }
– позволяет отдельно настраивать закрытие при различных событиях.Пример с sideClick:
$('.tooltip-element').tooltipster({
trigger: 'click',
interactive: true,
sideClick: true
});
Особенности:
interactive: true.В сложных интерфейсах, где один клик может затрагивать несколько
тултипов или элементов с разным поведением, рекомендуется комбинировать
trigger: 'custom' с глобальными событиями. Например:
var tooltips = $('.tooltip-element').tooltipster({
trigger: 'custom',
interactive: true
});
tooltips.on('click', function() {
var instance = $(this).tooltipster('instance');
instance.open();
});
$(document).on('click', function(e) {
tooltips.each(function() {
var instance = $(this).tooltipster('instance');
if (!$(e.target).closest(instance.content()).length &&
!$(e.target).closest(this).length) {
instance.close();
}
});
});
Преимущества:
interactive: true
для тултипов с формами или кликабельным контентом.sideClick: true.custom trigger с глобальным обработчиком
документа.Этот подход обеспечивает полное управление закрытием всплывающих подсказок, позволяет интегрировать их в динамические интерфейсы и гарантирует корректное поведение при интерактивных действиях пользователя.