【发布时间】:2012-12-21 18:30:05
【问题描述】:
我正在使用引导程序 v2.2.2。我尝试了其他一些方法(即:close popover outside popover but inside stay open 和 How to dismiss a Twitter Bootstrap popover by clicking outside? 也尝试了 BootstrapX clickover 插件:https://stackoverflow.com/a/11029479/1043817)但我无法通过这些方法使其工作。
我创建了一个 JSFiddle,其代码在我的页面上使用:http://jsfiddle.net/FYNLL/(虽然我使用的是 v2.2.2,但 JSFiddle 使用的是来自 v2.0.2 的 JS。我认为存在一些差异在这些版本中。当我在本地使用 v2.2.2 时,在单击链接之前不会显示弹出框。在 JSFiddle 中,它显示在悬停状态。要清楚,我希望在单击链接后显示它,不悬停)
我想要完成的是在单击弹出框之外的区域时隐藏弹出框。如果单击另一个弹出框链接,我希望关闭第一个弹出框并打开被点击的弹出框。
这也不是绝对必要的,但是当popover 在 .js 文件中时,我无法让它工作(我尝试过使用.each())。我真的很想从我的 HTML 文件中删除 <script> $(function () { $("a[rel=popover]").popover(); });</script>。同样,这并不是真正的优先事项。
【问题讨论】:
-
在 JavaScript 中,据我所知,您无法处理甚至称为“吉米点击了 X 以外的其他地方”。总是必须有一个点击目标。此外,点击目标可能会调用
stopPropagation并防止点击冒泡到窗口,因此您不能将点击处理程序绑定到窗口并认为这会起作用。我认为您能做的最好的事情就是传递 {trigger: 'click'} 选项,并使其在点击时激活。当用户点击任何地方时它将关闭,我认为这是由于锚点上的模糊事件。小提琴也摆脱了