Событие before в библиотеке Tooltipster играет ключевую
роль в контроле над поведением тултипов перед их показом. Оно позволяет
вмешиваться в процесс и управлять содержимым или состоянием всплывающей
подсказки до того, как она станет видимой на странице.
origin), текущие параметры тултипа
(instance), а также возможность изменять содержимое до
отображения.Обработчик события before имеет следующий вид:
$('#myElement').tooltipster({
content: 'Исходный текст',
functionBefore: function(instance, helper) {
// instance — объект Tooltipster, через который можно управлять тултипом
// helper.origin — DOM-элемент, к которому прикреплен тултип
}
});
Параметры:
instance — объект Tooltipster, предоставляет методы
для управления тултипом:
instance.content(newContent) — заменяет текст или
HTML-контент тултипа.instance.option(optionName, value) — изменяет параметры
тултипа динамически.instance.show() — принудительно показывает тултип.helper — объект с информацией о текущем
элементе:
helper.origin — исходный DOM-элемент, к которому
привязан тултип.Событие before поддерживает асинхронное обновление
содержимого. Это полезно, когда текст тултипа нужно получать через
AJAX-запрос или вычислять динамически.
$('#myElement').tooltipster({
functionBefore: function(instance, helper) {
if (!helper.origin.hasAttribute('data-loaded')) {
$.get('/tooltip-content', function(data) {
instance.content(data);
helper.origin.setAttribute('data-loaded', 'true');
instance.show(); // показываем тултип после загрузки
});
return false; // отменяет показ до завершения асинхронной операции
}
}
});
Важные моменты при асинхронной работе:
false из functionBefore
останавливает стандартное отображение тултипа до завершения асинхронной
операции.instance.show(), чтобы показать тултип.Событие before позволяет динамически менять параметры
тултипа, например, позицию, анимацию или тему:
$('#myElement').tooltipster({
functionBefore: function(instance, helper) {
if (window.innerWidth < 768) {
instance.option('animation', 'fade');
instance.option('theme', 'tooltipster-light');
} else {
instance.option('animation', 'grow');
instance.option('theme', 'tooltipster-shadow');
}
}
});
С помощью before можно реализовать условное отображение
тултипа:
$('#myElement').tooltipster({
functionBefore: function(instance, helper) {
const shouldShow = helper.origin.dataset.show === 'true';
return shouldShow; // false предотвращает показ
}
});
Возврат true позволяет тултипу показаться,
false — блокирует отображение.
before для динамического
контента или условного показа, избегая
громоздких проверок при каждом событии show.false и вызывать instance.show()
после завершения операции.instance.option
влияют только на текущий показ, без изменения глобальных настроек.$('#imageTooltip').tooltipster({
functionBefore: function(instance, helper) {
const img = new Image();
img.src = helper.origin.dataset.imgSrc;
img.onl oad = function() {
instance.content(img);
instance.show();
};
return false;
}
});
$('#inputTooltip').tooltipster({
functionBefore: function(instance, helper) {
const value = document.querySelector('#inputField').value;
instance.content('Вы ввели: ' + value);
}
});
$('#buttonTooltip').tooltipster({
functionBefore: function(instance, helper) {
if (!helper.origin.classList.contains('active')) {
return false;
}
}
});
Эти примеры демонстрируют гибкость события before,
которое позволяет полностью контролировать процесс подготовки и
отображения тултипа до момента его появления на странице.