Tooltipster предоставляет возможность динамически отображать подсказки, используя значения, хранящиеся в HTML-элементах через data-атрибуты. Это позволяет отделить разметку от логики, облегчая поддержку и обновление контента.
Для работы с Tooltipster необходимо подключить библиотеку и jQuery:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tooltipster@4.2.8/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@4.2.8/dist/js/tooltipster.bundle.min.js"></script>
Инициализация с поддержкой data-атрибутов:
$('.tooltip').tooltipster({
contentAsHTML: true,
theme: 'tooltipster-shadow',
functionInit: function(instance, helper) {
var content = $(helper.origin).data('tooltip-content');
instance.content(content);
}
});
contentAsHTML: true — позволяет
использовать HTML в подсказке.functionInit — функция, вызываемая при
создании подсказки, где можно получить содержимое из data-атрибута.<button class="tooltip" data-tooltip-content="Пример подсказки с <strong>HTML</strong>">Наведи на меня</button>
<a href="#" class="tooltip" data-tooltip-content="Ссылка с подсказкой">Ссылка</a>
data-tooltip-content — стандартное
название атрибута для хранения текста или HTML подсказки.Tooltipster позволяет обновлять контент подсказки в процессе работы:
$('.tooltip').on('mouseenter', function() {
var newContent = $(this).data('tooltip-content-new');
$(this).tooltipster('content', newContent);
});
tooltipster('content', newContent) —
изменяет содержимое подсказки на лету.Можно комбинировать несколько data-атрибутов для разных частей подсказки:
<div class="tooltip"
data-tooltip-title="Заголовок"
data-tooltip-body="Основной текст подсказки">
Наведи на меня
</div>
Инициализация с объединением:
$('.tooltip').tooltipster({
contentAsHTML: true,
functionInit: function(instance, helper) {
var title = $(helper.origin).data('tooltip-title');
var body = $(helper.origin).data('tooltip-body');
instance.content('<h3>' + title + '</h3><p>' + body + '</p>');
}
});
Если необходимо динамически подгружать информацию по событию, можно комбинировать data-атрибуты с AJAX:
$('.tooltip').tooltipster({
contentAsHTML: true,
functionBefore: function(instance, helper) {
if (!instance.content() || instance.content() === '') {
var url = $(helper.origin).data('tooltip-ajax');
$.get(url, function(data) {
instance.content(data);
});
}
}
});
functionBefore — вызывается перед
отображением подсказки, позволяет подгрузить данные асинхронно.data-tooltip-ajax — хранит URL для
запроса.<button class="tooltip"
data-tooltip-title="Подсказка"
data-tooltip-body="Подробный текст подсказки"
data-tooltip-ajax="tooltip-content.html">
Элемент
</button>
$('.tooltip').tooltipster({
contentAsHTML: true,
theme: 'tooltipster-shadow',
functionInit: function(instance, helper) {
var title = $(helper.origin).data('tooltip-title');
var body = $(helper.origin).data('tooltip-body');
instance.content('<h3>' + title + '</h3><p>' + body + '</p>');
},
functionBefore: function(instance, helper) {
var url = $(helper.origin).data('tooltip-ajax');
if (url && !instance.content()) {
$.get(url, function(data) {
instance.content(data);
});
}
}
});
Такой подход обеспечивает гибкость, масштабируемость и легкость управления контентом подсказок напрямую из HTML через data-атрибуты.