【问题标题】:Bootstrap popover does not work on first mouseenter event引导弹出框不适用于第一个 mouseenter 事件
【发布时间】:2012-11-26 05:37:50
【问题描述】:

我使用代码如下

<a class="reply"  data-content="this is the mail" 
data-original-title="this is the title" rel="popover">this</a>

我触发jquery事件如下

$(document).on("mouseenter",".reply",function(event){
   $(this).popover({placement:'bottom'});
});

但问题出在第一个悬停事件上,弹出框没有显示

从第二个事件弹出框正常显示...这种活动的原因是什么以及如何纠正它...

【问题讨论】:

    标签: jquery twitter-bootstrap popover jquery-hover


    【解决方案1】:

    您需要将trigger: 'hover'trigger: 'manual' 添加到弹出框的选项中。就个人而言,我会将您的javascript 替换为以下内容..

    $(function(){
      $('.reply').popover({
        placement: 'bottom',
        trigger: 'hover'
      })
    })
    

    编辑,如果你必须使用你设置的javascript,试试这个

    $(document).on("mouseenter",".reply",function(event){
      $(this).popover({
        placement:'bottom', 
        trigger: 'hover'
      }).popover('show');
    });
    

    【讨论】:

    • 上面显示的链接代码是从javascript创建的,所以需要委托元素,所以你提到的代码对我不起作用
    • 好吧,不知道你所说的从 javascript 创建的意思是什么,但我更新了帖子以展示一个示例,以保持它的原样..
    • +1 对您的评论您的评论帮助我找到了答案。我在下面发布了答案。根据您的代码,弹出框会显示并且永远不会隐藏。
    • 这就是为什么 trigger: 'hover' 被添加到选项中,所以它在鼠标输入时显示,在鼠标离开时隐藏.. 如果你可以 +1 答案,而不是评论更好..
    • 附加代码会在mouseenter事件上调用弹出框初始化代码。
    【解决方案2】:

    我找到了添加以下代码的答案

    $(document).on("mouseenter",".reply",function(event){
      $(this).popover({placement:'bottom'});
      $(this).popover('toggle');
    });
    

    【讨论】:

    • -1 初始化弹出框的代码只能被调用一次。
    【解决方案3】:

    您应该使用 selector 属性来委托 Popover 插件 (see docs)。像这样:

    $('body').popover({
      placement: 'bottom',
      trigger: 'hover',
      selector: '.reply'
    });
    

    注意:在实践中,建议使用比'body' 更窄的代表。

    【讨论】:

      【解决方案4】:

      只需选择您的元素,然后通过悬停调用弹出框

      $("[rel=popover]").popover({trigger:"hover"});
      

      【讨论】:

        猜你喜欢
        • 2017-12-26
        • 1970-01-01
        • 2016-10-11
        • 1970-01-01
        • 2018-10-22
        • 2012-08-21
        • 1970-01-01
        • 2015-12-20
        • 2015-02-27
        相关资源
        最近更新 更多