javascript - Bootstrap 弹出窗口停留在内容上

标签 javascript jquery html css twitter-bootstrap

我有这个有效的 Bootstrap 弹出窗口,它可以很好地处理时间属性。 但我希望它具有这样的功能,即当有人将鼠标放在内容上时它不应该关闭,而当鼠标离开内容时应该关闭。

下面是相关的代码。 https://jsfiddle.net/bob_js/eLLaacju/5/

HTML

<div>
Title
</div>
<div class="container">
<i id="popover-a" class="circle-macro" tabindex="0" data-container="body" data-html="true" data-trigger="hover" data-toggle="popover" data-placement="right">i</i>

<div id="popover-content-a" class="hidden">
 <div>
  <h6><b>Heading</b></h6>
   <p>Content <a href="#">Click Me</a></p>
 </div>
</div>
<br>

<i id="popover-b" class="circle-macro" tabindex="1" data-container="body" data-html="true" data-trigger="hover" data-toggle="popover" data-placement="right">i</i>

<div id="popover-content-b" class="hidden">
 <div>
  <h6><b>Heading</b></h6>
   <p>Content <a href="#">Click Me</a></p>
 </div>
</div>

</div>

jQuery:

$(function () {
  $("#popover-a").popover({
    html: true, trigger: 'hover', delay: {show:50, hide: 1000},
    content: function(){
      return $('#popover-content-a').html();     
    }
  });
  $("#popover-b").popover({
    html: true, trigger: 'hover', delay: {show:50, hide: 1000},
    content: function(){
      return $('#popover-content-b').html();     
    }
  });
});

CSS:

.circle-macro {
    border-radius: 50%;
    background-color: rgb(68, 104, 125);
    color: white;
    padding: 0 8px;
    font-family: 'Times New Roman';
    font-style: italic;
    z-index: 10;
    cursor: pointer;
}
.hidden{
  display: none;
}

最佳答案

如果您的意思是当用户在弹出窗口上移动鼠标时,它不应关闭,那么这是我为此使用的代码。致谢 this fiddle 的作者对于最初的想法和代码。

$.fn.popover.Constructor.prototype.leave = (function(fn) {
  return function(obj) {
    var self = obj instanceof this.constructor ?
      obj : $(obj.currentTarget).data("bs." + this.type);
    if (!self) {
      self = new this.constructor(obj.currentTarget, this.getDelegateOptions());
      $(obj.currentTarget).data("bs." + this.type, self);
    }

    var container, timeout;

    fn(obj);

    if (self.$tip && self.$tip.length) {
      container = self.$tip;
      timeout = self.timeout;
      container.off("mouseenter.popover").one("mouseenter.popover", () => {
        clearTimeout(timeout);
        container.off("mouseleave.popover").one("mouseleave.popover", () => {
          $.fn.popover.Constructor.prototype.leave.call(self, self);
        });
      });
    }
  };
})($.fn.popover.Constructor.prototype.leave);

它所做的基本上是捕获鼠标在弹出窗口上的输入,并拒绝关闭弹出窗口。

关于javascript - Bootstrap 弹出窗口停留在内容上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40385071/

相关文章:

javascript - jQuery 水平对齐的 div 不居中

javascript - jquery比较数组并返回不相同的值

javascript - 如何为带有溢出的div的滚动位置设置动画: auto?

javascript - 如何设置表格样式以便表格中的特定框在单击时更改颜色?

javascript - 进度条取决于用户输入

javascript - 使用 Rest Api 发布到 ODL Controller

javascript - 复选框 jQuery 显示隐藏的 div

javascript - 禁用单个按钮

javascript - $ 未定义(SharePoint + JS)

javascript - 需要简单的 JavaScript HTML DOM 函数的帮助