Bootstrap popover隐藏在外部点击.仅在第二次单击时打开
Bootstrap popover hide on outside click. Opens only on second click
使用其他答案中的解决方案在外部单击时隐藏Bootstrap弹出窗口。
然而,它需要两次点击才能再次打开popover(如果我通过点击外部关闭它)。
它工作正常,当我使用按钮关闭它时,第一次点击就会打开。
以下是重新创建的问题:http://codepen.io/olegovk/pen/BjQmQe
使用的html:
<!-- Popup button -->
<a id="menu-button" class="menu-button" data-html="true" role="button" data-container="body" data-toggle="popover" data-placement="bottom">Menu</a>
<!-- Popup content -->
<div id="menu-content">
<h1>Hello</h1>
<p>Good bye</p>
<a href="#">Link</a>
</div>
以及jQuery:
$('#menu-button').popover({
content: $('#menu-content').html(),
html: true
});
$('html').on('click', function(e) {
if (typeof $(e.target).data('original-title') == 'undefined' &&
!$(e.target).parents().is('.popover.in')) {
$('[data-original-title]').popover('hide');
}
});
有什么想法吗?为什么会发生这种情况,以及如何让弹出窗口总是在第一次点击时打开?
需要注意的是:我发现不可能使用这个"官方"解决方案,因为它使点击弹出窗口内的链接变得不可能:http://getbootstrap.com/javascript/#dismiss-在下一次单击时
您不需要额外的Js来关闭popover,正如文档中所说的docs
下次点击时取消
使用焦点触发器可以在用户下一次单击时取消弹出窗口。
<a tabindex="0"
class="btn btn-lg btn-danger"
role="button" data-toggle="popover"
data-trigger="focus" title="Dismissible popover"
data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover
</a>
data-trigger="focus"
在用户下次单击时关闭弹出窗口。
在许多情况下(主要是文档中的其余代码),一旦你离开popover,你就必须重新关注它。这个事件不容易将点击事件绑定到html或body。按钮往往比超链接更能重新获得焦点。(这是我的理论,我会质疑它,但这是我在这里和那里读到的)重点是,这个代码有效,哈哈,这是重要的,不是吗?
如果需要,我建议您将超链接更改为按钮,并将其设置为超链接样式,并使用此处提供的jFiddle中的代码
$('[data-toggle="popover"]').popover();
$('body').on('click', function (e) {
$('[data-toggle="popover"]').each(function () {
//the 'is' for buttons that trigger popups
//the 'has' for icons within a button that triggers a popup
if (!$(this).is(e.target) && $(this).has(e.target).length === 0 &&
$('.popover').has(e.target).length === 0) {
$(this).popover('hide');
}
});
});
这是工作jfiddle
相关文章:
- 当单击第一个李时,它显示内容一,当单击第二个李时,它显示内容二
- 单击一次后禁用按钮-第2部分
- 如何对每个用户每天只允许单击一次的按钮进行编码
- button.单击两次删除附加操作后不工作
- 为什么jQuery下拉列表需要单击两次
- 单击3次后禁用按钮
- 为每个字母单击一次
- Rails-jQuery 为什么我必须单击两次才能显示 jQuery 效果
- 对同一类中的所有元素单击一次
- 单击一次以静音,另一次单击可取消静音
- 必须单击两次才能得到一个响应
- 如何在幻灯片中添加向上滚动功能单击1次即可向下滚动
- 如何加载一个html页面并在其中只需单击一次即可运行函数
- isHidden函数要求我在应用响应显示时单击两次
- 元素必须单击两次才能添加Class(自定义指令)
- 只需单击一次按钮,jquery即可自动淡入/淡出文本
- ajax表单在第二次提交时提交了两次,在第三次提交时又提交了三次,等等
- 单击第二次轮次单击
- 单击按钮后,附加表单,第二次单击时向下滑动并向上滑动
- 首先显示一个Div,然后在表单中第二次单击按钮时提交