繁体   English   中英

用户在弹出窗口外单击时关闭Bootstrap Popover

[英]Closing Bootstrap Popover When User Clicks Outside Popover

我有一些内容在包含弹出窗口的网页上​​动态加载。 出于这个原因,我必须将它们绑定到身体,以便它们加载并正确显示。

当用户点击弹出窗口或其他弹出窗口触发器时,我想找到隐藏弹出窗口的方法。

我发现如果我“隐藏”popover,popover确实隐藏了但元素仍保留在DOM中。 这意味着popover中的活动链接仍然是“可点击的”。

如果我改为破坏弹出窗口,它会隐藏,但如果单击则无法重新激活。 隐藏弹出窗口的唯一可靠方法是使用“切换”。 这增加了确定隐藏哪些弹出窗口的复杂性。

请使用所有这些代码查看此JSFiddle

HTML

<a href="#" data-toggle="popover" data-original-title="" data-content="<a href='http://www.yahoo.com'>http://www.yahoo.com</a>" class="some-popover-link">Yahoo</a>
<br><br> <br> <br> <br>  <a href="#" data-toggle="popover" data-original-title="" data-content="<a href='http://www.google.com'>http://www.google.com</a>" class="some-popover-link">Google</a>
<br><br> <br> <br> <br>  <a href="#" data-toggle="popover" data-original-title="" data-content="<a href='http://www.microsoft.com'>http://www.microsoft.com</a>" class="some-popover-link">Microsoft</a>

JavaScript的

$('.some-popover-link').popover({
    container: 'body',
    html: true,
    placement: 'bottom'
});

$(document).click(function (e) {
    $('.some-popover-link').each(function () {
        if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {
            $(this).popover('hide'); // this hides popover, but content remains
            return;
        }
    });
});

这依赖于内部实现,所以要小心,但它应该工作。 JSFiddle链接

if ($(this).data('bs.popover').tip().hasClass('in')) {
    $(this).popover('toggle');
}

使用此代码:

$(document).mouseup(function (e) {
    if ($('.popover').has(e.target).length === 0) {
        $('.popover').toggleClass('in').remove();
        return;
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM