【发布时间】:2016-07-29 08:36:33
【问题描述】:
我正在使用 Bootstrap 弹出框,弹出框内容是 HTML。我正在使用下面的代码来初始弹出窗口。此代码基于https://stackoverflow.com/a/13203876/1354727 这个答案。
弹出框内容位于 id 为 #song-status-popover 的 div 中。
$(".song-status-link").popover({
html: true,
placement: 'bottom',
content: function () {
return $("#song-status-popover").html();
}
});
我想在弹出框外部单击时关闭弹出框,因此我使用了以下代码:
$('html').on('mouseup', function (e) {
if (!$(e.target).closest('.popover').length) {
$('.popover').each(function () {
$(this).closest('div.popover').popover('hide');
});
}
});
到目前为止,它做得很好,但是我在同时使用这两个代码时遇到了一个问题。当我打开弹出框并单击外部以将其关闭时,如果我再次单击链接以打开弹出框,则它不会在第一次单击时打开。我必须点击两次才能打开它。
我想知道我缺少什么以及为什么在通过单击外部将其关闭后无法一键打开弹出框。请帮忙!
更新:我相信当我在外面点击时它会隐藏弹出框,但引导程序仍然认为它是打开的,并且在第一次点击时它实际上认为它已关闭,而在第二次点击时它会打开弹出框。
【问题讨论】:
-
你能在 jsfiddle 中复制你的错误吗?
-
信不信由你这是最难做的事情。要么让它在悬停时可见并在模糊时隐藏。或者你可以使用默认属性单击显示并单击隐藏。(如果你在同一页面上有多个弹出窗口)。这个问题在 SO 上已经被问过很多次了。
-
我在一页上有更多的弹出窗口,这使它变得更加困难。您会注意到我使用的是 class 而不是 id 作为目标。但是,我想在所有弹出窗口中打开相同的内容。
标签: jquery css twitter-bootstrap-3 popover