Bootstrap Popover 需要第二次点击才能显示

Posted

技术标签:

【中文标题】Bootstrap Popover 需要第二次点击才能显示【英文标题】:Bootstrap Popover Requires Second Click Before Showing 【发布时间】:2018-04-30 15:53:04 【问题描述】:

这使您在获得图像和弹出框出现之前单击两次,但在您这样做之后,它会按预期工作,当您单击下一个时,前一个消失并出现新的。另外,我认为这可以巩固。任何帮助,将不胜感激。这是一个代码笔示例:Boostrap Popover Timeline

$(".timeline-list-btn").on('click', function() 
  $("[data-toggle='popover']").popover()
  $("[data-toggle='popover']").not(this).popover('hide')


  $("#1-btn").on('click', function() 
    $(this).css(
      'background': 'url(../img/help/help1.svg) no-repeat center center',
      'background-color': '#4359AB',
      'background-size': "65px, 65px",
      'transform': 'scale(0.75, 0.75)',
      'box-shadow': 'none',
    );
    $("[data-toggle='popover']").not(this).css(
      'background': 'white',
      'transform': 'scale(0.25, 0.25)',
    );
  );

  $("#2-btn").on('click', function() 
    $(this).css(
      'background': 'url(../img/help/help2.svg) no-repeat center center',
      'background-color': '#4359AB',
      'background-size': "65px, 65px",
      'transform': 'scale(0.75, 0.75)',
      'box-shadow': 'none'
    );
    $("[data-toggle='popover']").not(this).css(
      'background': 'white',
      'transform': 'scale(0.25, 0.25)'
    );
  );

  $("#3-btn").on('click', function() 
    $(this).css(
      'background': 'url(../img/help/help3.svg) no-repeat center center',
      'background-color': '#4359AB',
      'background-size': "65px, 65px",
      'transform': 'scale(0.75, 0.75)',
      'box-shadow': 'none'
    );
    $("[data-toggle='popover']").not(this).css(
      'background': 'white',
      'transform': 'scale(0.25, 0.25)'
    );
  );
);

【问题讨论】:

【参考方案1】:

我重构了函数。我的问题的唯一答案是包装函数上的 .mousedown() ,就这么简单。看看下面:

$(".timeline-list-btn").mousedown(function() 
  $("[data-toggle='popover']").popover()
  $("[data-toggle='popover']").not(this).popover('hide')
// Wrap the above functions into a trigger function here


  $("#1-btn").click(function() 
    $(this).css(
      'background': 'url(../img/help/help1.svg) no-repeat center',
      'background-color': '#4359AB',
      'background-size': "65px, 65px",
      'transform': 'scale(0.75, 0.75)',
      'box-shadow': 'none',
    );
    $("[data-toggle='popover']").not(this).css(
      'background': 'white',
      'transform': 'scale(0.25, 0.25)',
    );
  );

  $("#2-btn").click(function() 
    $(this).css(
      'background': 'url(../img/help/help2.svg) no-repeat center',
      'background-color': '#4359AB',
      'background-size': "65px, 65px",
      'transform': 'scale(0.75, 0.75)',
      'box-shadow': 'none'
    );
    $("[data-toggle='popover']").not(this).css(
      'background': 'white',
      'transform': 'scale(0.25, 0.25)'
    );
  );

  $("#3-btn").click(function() 
    $(this).css(
      'background': 'url(../img/help/help3.svg) no-repeat center',
      'background-color': '#4359AB',
      'background-size': "65px, 65px",
      'transform': 'scale(0.75, 0.75)',
      'box-shadow': 'none'
    );
    $("[data-toggle='popover']").not(this).css(
      'background': 'white',
      'transform': 'scale(0.25, 0.25)'
    );
  );
);

【讨论】:

以上是关于Bootstrap Popover 需要第二次点击才能显示的主要内容,如果未能解决你的问题,请参考以下文章

bootstrap 中modal弹出的窗口 当点击关闭的时候,第一次点击后面背景消失但不关闭,第二次才会关闭

请问用bootstrap点击一个按钮时是不是触发另外一个按钮弹出popover?

Bootstrap popover 关闭功能在 iphone 中不起作用

bootstrap popover:使用 ajax 重新加载内容

显示后的 Bootstrap 4 Popover Javascript

bootstrap的popover插件在focus模式时在Safari浏览器无法使用的bug解决方案