我在一组Twitter Bootstrap Popovers上使用以下代码,以确保一次只能打开一个popover,并且在popover外部单击将其关闭。点击里面一个弹出框应该不关闭弹出窗口,确保弹出窗口内的任何表单元素都可以有效使用。
我的解决方案基于StackOverflow问题How do I detect a click outside an element?
这个已接受的答案它几乎完美无缺,除了在弹出窗口内单击仍然关闭弹出窗口。 StopPropagation不会从.popover类的单击侦听器中触发。
检查弹出窗口显示他们确实有类.popover,那么为什么听众没有拿起点击?
HTML:
<a href="#" class="linkPopover">Popover One</a>
<a href="#" class="linkPopover">Popover Two</a>
脚本:
$(document).click(function() {
$('.linkPopover').popover('hide');
});
$('.popover').click(function(e) {
e.stopPropagation(); // code inside this listener is not being fired
});
$('.linkPopover').click(function() {
$('.linkPopover').not(this).popover('hide');
});
$('.linkPopover')
.popover({
content: 'test'
})
.click(function(e) {
e.stopPropagation();
});
感谢您的帮助。
答案 0 :(得分:0)
我觉得这很有帮助。
Attach event handler to button in twitter bootstrap popover
看起来很hacky,我正在尝试找到一种解决方法,但现在它的效果还不错。