Сделать Bootstrap Popover появляться/исчезать на Hover вместо Click
Я создаю веб-сайт с Bootstrap Popover, и я не могу понять, как заставить popover отображаться при наведении, а не щелчке.
Все, что я хочу сделать, это включить popover, когда кто-то наводит курсор на ссылку, а не нажимает на нее и исчезает, когда они уходят. В документации говорится, что это возможно с использованием атрибута data или jquery. Я бы скорее сделал это с jquery, так как у меня много popovers.
Ответы
Ответ 1
Задайте опцию trigger
для popover для hover
вместо click
, которая является по умолчанию.
Это можно сделать, используя атрибуты data-*
в разметке:
<a id="popover" data-trigger="hover">Popover</a>
Или с опцией инициализации:
$("#popover").popover({ trigger: "hover" });
Здесь DEMO.
Ответ 2
Я хотел бы добавить, что для доступности я думаю, вы должны добавить триггер фокуса:
то есть. $("#popover").popover({ trigger: "hover focus" });
Ответ 3
Если вы хотите также нависать на popover, вам нужно использовать ручной триггер.
Вот что я придумал:
function enableThumbPopover() {
var counter;
$('.thumbcontainer').popover({
trigger: 'manual',
animation: false,
html: true,
title: function () {
return $(this).parent().find('.thumbPopover > .title').html();
},
content: function () {
return $(this).parent().find('.thumbPopover > .body').html();
},
container: 'body',
placement: 'auto'
}).on("mouseenter",function () {
var _this = this; // thumbcontainer
console.log('thumbcontainer mouseenter')
// clear the counter
clearTimeout(counter);
// Close all other Popovers
$('.thumbcontainer').not(_this).popover('hide');
// start new timeout to show popover
counter = setTimeout(function(){
if($(_this).is(':hover'))
{
$(_this).popover("show");
}
$(".popover").on("mouseleave", function () {
$('.thumbcontainer').popover('hide');
});
}, 400);
}).on("mouseleave", function () {
var _this = this;
setTimeout(function () {
if (!$(".popover:hover").length) {
if(!$(_this).is(':hover')) // change $(this) to $(_this)
{
$(_this).popover('hide');
}
}
}, 200);
});
}
Ответ 4
Функцию, описанную вами, можно легко получить с помощью всплывающей подсказки Bootstrap.
<button id="example1" data-toggle="tooltip">Tooltip on left</button>
Затем вызовите функцию tooltip() для элемента.
$('#example1').tooltip();
http://getbootstrap.com/javascript/#tooltips
Ответ 5
Попробовав несколько из этих ответов и обнаружив, что они недостаточно хорошо масштабируются с несколькими ссылками (например, для принятого ответа требуется строка jquery для каждой ссылки), я наткнулся на способ, который требует минимального кода для получения и он также работает отлично, по крайней мере, в Chrome.
Вы добавляете эту строку для ее активации:
$('[data-toggle="popover"]').popover();
И эти настройки для ваших якорных ссылок:
data-toggle="popover" data-trigger="hover"
Посмотрите здесь в действии, я использую тот же импорт, что и принятый ответ, поэтому он должен хорошо работать в старых проектах.