$('#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相同。对不起,以前的链接是错误的。这一个是正确的。
在隐藏显示的popover之后,我需要双击popover触发器再次显示。
这是一个bug吗?有什么可以避免的吗?
UPDATE
我的意思是我用另一个按钮隐藏了一个popover
$("#popoverTrigger").popover("hide");
比我需要点击“#popoverTrigger”两次显示。
STUPID解决方案
$("popoverhide").click(function() { var f = false; if($("popoverlink").next('div.popover:visible')) { f = true; $("popoverlink").popover("hide"); } if(f) { $("popoverlink").click(); } })
还有另一个好主意吗?
解决方法
在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 } });
注意:我使用委托的popovers这就是为什么我使用$(‘body’)引用。