【发布时间】:2013-08-15 21:41:52
【问题描述】:
我在一类 Twitter Bootstrap 弹出框上使用以下代码,以确保一次只能打开一个弹出框,并在弹出框外部单击将其关闭。在弹出框内点击不应关闭弹出框,确保弹出框内的任何表单元素都可以有效使用。
我的解决方案基于 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();
});
感谢您的帮助。
【问题讨论】: