javascript - 如果 Bootstrap .popover() 位于 ('hidden.bs.popover' 上,则“销毁”正在触发另一个 'hidden.bs.popover' 事件

标签 javascript jquery performance twitter-bootstrap twitter-bootstrap-3

如果 .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/

相关文章:

performance - Julia - 具有属性的可变结构,它是一个函数和@code_warntype

javascript - JQuery - 将 DOM 元素移动到新父元素的动画?

javascript - 根据条件查找所有索引

javascript - 如何访问并可能修改子 lit-element 组件的属性?

javascript - 在移动设备中在指定部分添加幻灯片(使用 Fullpage JS)

javascript - 如何在 Django 模板中连接内容 block ?

jQuery 窗口宽度 else if 语句

mysql - 单独的 MySQL INSERT 语句与先写入本地 CSV 然后加载数据

javascript - Jquery 对话框中的动态 Div 内容

java - 真实示例Java中什么是延迟驱动或性能驱动的应用程序