如果Bootstrap .popover()打开('hidden.bs.popover',则触发另一个'hidden.bs.popover'事件'''

时间:2015-07-16 18:14:36

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

我希望'destroy' .popover() .on('hidden.bs.popover' .on('shown.bs.popover' 'show'之后'hidden.bs.popover'再次'hidden.bs.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>触发了两次,因为破坏一个弹出框会触发另一个Template.userLoggedIn.helpers({ stream: function() { return ReactiveMethod.call("checkApi", function(err, results) { console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'); //nothing res = JSON.parse(results.content); // nothing return res }); } 导致破坏被破坏的弹出窗口,看起来它会影响一点性能。

{{#with stream }}
    {{this}} //Object object
{{/with}}
{{#with stream }}
        {{this.livestream}} //Undefined
  {{/with}}

我试图解决这个问题,但我选择不包括它以避免混淆。在没有触发相同事件的情况下,摧毁被解雇的弹出窗口的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

你可以使用one只绑定一次事件,但我相信它只适用于第一个popover,然后它将解除所有其他popovers事件的绑定,但值得给它一个机会:< / p>

$('[data-toggle="popover"]').one('hidden.bs.popover', function () {
  $(this).popover('destroy');
  console.debug("'hidden.bs.popover' triggering twice!");
});

答案 1 :(得分:0)

测试此代码 点击我

 $('.pop').popover();
$('.pop').on('mouseout',function(){
    $(this).popover('hide');
})