$('#popoverlink').popover();
$("#popoverhide").click(function() {
$("#popoverlink").popover("hide");
});
#popoverlink {
position: absolute;
top: 100px;
left: 100px;
}
<a href="#" id="popoverlink" class="btn" rel="popover" title="Some title">Popover</a>
<a href="#" id="popoverhide" class="btn" rel="popover" title="Some title">hide</a>
与fiddle相同。对不起前一个链接错了。这个是正确的。
隐藏显示的弹出窗口后,我需要再次单击弹出窗口触发器以再次显示它。
这是一个错误吗?有什么可以避免的吗?
更新 我的意思是我用另一个按钮来隐藏一个弹出窗口
$("#popoverTrigger").popover("hide");
我需要两次点击“#popoverTrigger”来显示它。
愚蠢的解决方案
$("popoverhide").click(function() {
var f = false;
if($("popoverlink").next('div.popover:visible')) {
f = true;
$("popoverlink").popover("hide");
}
if(f) {
$("popoverlink").click();
}
})
还有其他好主意吗?
答案 0 :(得分:89)
仍未在3.3.6中修复,但我在此处找到了一个建议的解决方案:
https://github.com/twbs/bootstrap/issues/16732
https://github.com/twbs/bootstrap/pull/17702/files#diff-f3e99e0bb007ace7a370f0492b9cb5abR340
我已将其应用于隐藏事件:
$('body').on('hidden.bs.popover', function (e) {
$(e.target).data("bs.popover").inState.click = false;
});
这对我有用。与提议的修正完全相同,它将是:
$('body').on('hidden.bs.popover', function (e) {
$(e.target).data("bs.popover").inState = { click: false, hover: false, focus: false }
});
注意:我使用委托弹出窗口,这就是我使用$('body')引用的原因。
Bootstrap 4 使用_activeTrigger
代替inState
:
$(e.target).data("bs.popover")._activeTrigger.click = false
答案 1 :(得分:5)
答案 2 :(得分:4)
我最近遇到了这个错误,这就是我修复它的方法:
$('.myPopoverClass')
.popover({
trigger: 'manual', /* <- important, instantiates popover */
container: 'body', /* optional */
animation: false
})
.click(function(e) {
$('.popover').not(this).hide(); /* optional, hide other popovers */
$(this).popover('show'); /* show popover now it's setup */
e.preventDefault();
});
答案 3 :(得分:0)
我有一个弹出窗口,在3秒后淡出,需要双击才能重新打开它。遵循Darren的解决方案并且有效。
$(function () {
$('#popLinks').popover({
html: true,
trigger: 'manual',
animation: true
});
$('#popLinks').click(function () {
$(this).popover('show');
setTimeout(function () {
$('.popover').fadeOut('slow');
}, 3000);
e.preventDefault();
});
});
答案 4 :(得分:0)
确保popover只会被初始化一次。如果它将被初始化超过 一次跨越不同的文件,你可能会遇到这个问题。
$table->integer('idMember');
答案 5 :(得分:0)
我在上面使用了达伦的答案。对不起Darren,我仍然无法评论其他人的帖子。 虽然有一点变化。我将'show'更改为'toggle'以便能够切换弹出框。
自:
$(this).popover('show');
要
$(this).popover('toggle');
答案 6 :(得分:0)
只需使用此:
$('[data-toggle="popover"]').popover();
代替:
this
答案 7 :(得分:0)
我使用以下代码行解决了该问题:
说明:使用 show.bs.popover 事件
在显示新弹出窗口之前将其隐藏重要!不要使用$('。popover')。hide();除非您单击两次,否则将阻止显示弹出窗口,而是使用$('element')。popover('hide')
reset
在出现多个弹出窗口时也可以使用。