Tooltipster позволяет создавать подсказки, которые могут динамически изменяться в процессе работы приложения. Под динамическим контентом понимается информация, которая формируется в момент отображения подсказки, например, данные, полученные через AJAX, вычисленные значения или интерактивные элементы.
Для работы с динамическим контентом необходимо подключить библиотеку Tooltipster и jQuery:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tooltipster/dist/css/tooltipster.bundle.min.css" />
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/tooltipster/dist/js/tooltipster.bundle.min.js"></script>
Инициализация для динамического контента отличается использованием
функции functionBefore или content с
колбэком:
$('.tooltip').tooltipster({
content: 'Загрузка...',
functionBefore: function(instance, helper) {
var $origin = $(helper.origin);
if ($origin.data('loaded') !== true) {
$.get('/data/' + $origin.attr('id'), function(data) {
instance.content(data);
$origin.data('loaded', true);
});
}
}
});
Разбор ключевых моментов:
content устанавливает начальное значение подсказки до
получения динамических данных.functionBefore вызывается перед отображением подсказки.
Именно здесь удобно подгружать динамический контент.instance.content(data) обновляет содержимое после
получения данных.$origin.data('loaded') предотвращает повторные
запросы для одного элемента.Tooltipster поддерживает асинхронное обновление содержимого, что позволяет подгружать информацию с сервера без перезагрузки страницы:
$('.tooltip-ajax').tooltipster({
content: 'Подождите...',
functionBefore: function(instance, helper) {
var $origin = $(helper.origin);
if (!$origin.data('ajax-loaded')) {
$.ajax({
url: '/api/info',
method: 'GET',
success: function(response) {
instance.content(response.html);
$origin.data('ajax-loaded', true);
},
error: function() {
instance.content('Ошибка загрузки данных');
}
});
}
}
});
Особенности:
Для обновления подсказки после действий пользователя, например,
изменения формы или клика, можно использовать метод content
напрямую:
$('#update-button').on('click', function() {
var dynamicText = 'Текущее время: ' + new Date().toLocaleTimeString();
$('#dynamic-tooltip').tooltipster('content', dynamicText);
});
Особенности подхода:
tooltipster('content', newContent) позволяет
изменять содержимое без повторной инициализации.Tooltipster позволяет вставлять интерактивные элементы, такие как кнопки, ссылки, формы:
$('.tooltip-interactive').tooltipster({
content: $('<div><input type="text" id="input" placeholder="Введите текст"><button id="btn">Отправить</button></div>'),
interactive: true
});
$(document).on('click', '#btn', function() {
alert('Введено: ' + $('#input').val());
});
Ключевые моменты:
interactive: true предотвращает закрытие
подсказки при взаимодействии с её содержимым.Можно изменять не только содержимое, но и оформление подсказок на лету:
$('#tooltip-style').tooltipster({
content: 'Смените стиль',
functionReady: function(instance, helper) {
instance.option({
theme: 'tooltipster-punk',
animation: 'fade'
});
}
});
instance.option({ ... }) позволяет обновлять
настройки подсказки динамически.При работе с большим количеством элементов с динамическим контентом следует учитывать:
data('loaded')) для
предотвращения повторных запросов.functionInit для предварительной
подготовки содержимого, если оно повторяется для нескольких
элементов.functionBefore для
сокращения задержки появления подсказки.Динамический контент делает Tooltipster мощным инструментом для создания интерактивных интерфейсов с гибкой информационной подачей, позволяя адаптировать подсказки под любые условия и действия пользователя.