如果 .popover()
之后变成 .on('hidden.bs.popover'
),我想'销毁'
是 .on('shown.bs.popover'
所以它不会再 'show'
。一切似乎都正确,但看看控制台,事件 'hidden .bs.popover'
触发了两次,因为销毁 popover 会触发另一个 'hidden.bs.popover'
导致销毁已销毁的 popover,看起来会影响一点性能。
$(function () {
$('[data-toggle="popover"]').popover()
})
$('[data-toggle="popover"]').on('hidden.bs.popover', function () {
$(this).popover('destroy');
console.debug("'hidden.bs.popover' triggering twice!");
})
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
我试图弄清楚它,但为了避免混淆,我选择不包含它。销毁已关闭的弹出窗口而不触发相同事件的正确方法是什么?
最佳答案
您可以使用 one
仅绑定(bind)一次事件,但我相信它仅适用于第一个弹出窗口,然后它将取消该事件与所有其他弹出窗口的绑定(bind),但值得给它一个机会:
$('[data-toggle="popover"]').one('hidden.bs.popover', function () {
$(this).popover('destroy');
console.debug("'hidden.bs.popover' triggering twice!");
});
关于javascript - 如果 Bootstrap .popover() 位于 ('hidden.bs.popover' 上,则“销毁”正在触发另一个 'hidden.bs.popover' 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31461624/