gpt4 book ai didi

javascript - 当用户在 Popover 外部单击时关闭 Bootstrap Popover

转载 作者:数据小太阳 更新时间:2023-10-29 05:46:45 27 4
gpt4 key购买 nike

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

我想找到一种方法来在用户点击弹出窗口外或另一个弹出窗口触发器时隐藏弹出窗口。

我发现,如果我“隐藏”弹出窗口,弹出窗口确实会隐藏,但元素仍保留在 DOM 中。这意味着弹出窗口中的事件链接仍然是“可点击的”。

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

请参阅this 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 Link

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

关于javascript - 当用户在 Popover 外部单击时关闭 Bootstrap Popover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19695180/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com