当我的任何身体元素(而不是popover本身)被关注时,我正在关闭任何popover被打开,
所以我做:
$(document.body).on('focus focusout focusin',function(e) { if( e.target.classList.contains('popover') ){return false;} else{ $('*').popover('hide'); } // code to close the popover });
这在Chrome上非常出色,但不是在FF上,在FF之前,我需要关注和关注popout.
这里是我的例子,只适用于chrome:http://jsfiddle.net/CU5U5/4/
我如何解决这个问题?
解决方法
替代:
$(document).on('focus',':not(.popover)',function(){ $('.popover').popover('hide'); });
编辑:
所以,事实证明,我上面的答案是不正确的.您需要在popover被实例化的元素上调用.popover(‘hide’),而不是.popover本身.并且您需要停止链接上的点击事件的传播(即在点击处理程序中返回false),因此它不会冒泡到文档根目录.看到这个答案,http://jsfiddle.net/aFacG/1/.
HTML
<a data-content="a popover" id="mypopover" href="#">click me</a>
JS
$(document).ready(function(){ $("#mypopover").popover(); $(document).on('click',function(){ $("#mypopover").popover('hide'); }); $('#mypopover').click(function(){ return false; }); });