使用hover触发器显示弹出窗口可以正常工作。
使用click触发器显示弹出窗口也可以正常工作。
现在,我该如何在用户悬停在触发图像上时显示弹出窗口,但是如果用户单击图像,则取消悬停并启动单击切换?换句话说,悬停会显示弹出窗口,而单击则“固定”弹出窗口。
HTML非常标准:
<li>User<span class="glyphicon glyphicon-user" rel="popover" data-trigger="click" data-container="body" data-placement="auto left" data-content="Body Text" data-original-title="Title Text"></span></li>
而且弹出窗口的初始化,更加枯燥无味:
$(function () {
$("[rel=popover]").popover();
});
根据我目前的观察,解决方案似乎是在popover('show'
),popover('hide'
)和popover('toggle'
)调用之间进行巧妙复杂的设置,但我的javascript / jQuery开发水平无法胜任该任务。
编辑:
使用@hajpoj提供的代码作为基础,我添加了一个监听hidden.bs.popover
事件的函数,尝试在触发点击事件后重新启用mouseenter和mouseleave事件,但虽然它确实使“hover”再次起作用,但会取消“点击”...
var $btn2 = $('#btn2');
var enterShow = function() {
$btn2.popover('show');
};
var exitHide = function() {
$btn2.popover('hide');
}
$btn2.popover({trigger: 'manual'})
.on('mouseenter', enterShow)
.on('mouseleave', exitHide)
.one('click', function() {
$btn2.off('mouseenter', enterShow)
.off('mouseleave', exitHide)
.on('click', function() {
$btn2.popover('toggle');
});
});
$('#btn2').on('hidden.bs.popover', function () {
$btn2.on('mouseenter', enterShow)
.on('mouseleave', exitHide)
});
$btn.popover('hover');
是不正确的。应该是$btn2.popover('show');
,因为在popover函数中使用hover
会导致脚本错误。 - Dush