按钮单击和鼠标选项后,Bootstrap的工具提示不会消失

Sil*_*Cry 98 javascript tooltip twitter-bootstrap

我有一个bootstrap工具提示的问题:当我点击一个按钮时,即使光标在按钮之外,工具提示也会保持不变.我查看了手册 - Bootstrap的工具提示,如果我点击按钮,我会看到同样的问题.有没有解决方法可以解决这个问题?刚尝试了最新的FF,IE.

dav*_*rad 204

这是因为trigger未设置.触发器的默认值是'hover focus',因此在单击按钮后工具提示保持可见,直到单击另一个按钮,因为按钮是focused.

因此,所有你需要做的就是定义trigger'hover'唯一.在单击按钮后链接到的同一示例下面没有持久化工具提示:

$('[data-toggle="tooltip"]').tooltip({
    trigger : 'hover'
})  
Run Code Online (Sandbox Code Playgroud)

小提琴中的doc示例 - > http://jsfiddle.net/vdzvvg6o/

  • 谢谢大卫,这真的有效。我最后误解了工具提示的触发选项,现在我是对的。 (3认同)
  • @davidkonrad移动平台,盲人用户.可能还解释了为什么他们将"悬停焦点"设置为默认值. (3认同)
  • @SilentCry 请记住您的目标是谁,触发“悬停”可能并不总是容易/常见。 (2认同)
  • @phk,bootstrap有一个普遍的问题,因为不是移动优先,对于盲人我们应该使用aria-attributes.BTW是一个很好的工具,用于测试为加拿大当局开发的可用性,你可以实现几个"级别" - >**http://achecker.ca/checker/index.php**我的国家没有这些标准,但无论如何都值得跟上他们. (2认同)
  • 谢谢。我讨厌这些烦人的、耗时的“小”事情..这应该是默认行为.. (2认同)

Nit*_*tai 54

我知道一年多了,但我无法在这里使用任何例子.我必须使用以下内容:

$('[rel="tooltip"]').on('click', function () {
    $(this).tooltip('hide')
})
Run Code Online (Sandbox Code Playgroud)

这也会在悬停时再次显示工具提示.

  • 这需要成为公认的答案,并且也应该实现到引导代码库中。 (4认同)
  • 这对于放置在按钮上的引导工具提示非常有用,触发器"悬停"会导致异步回发(即显示模式面板).如果没有这个,按下按钮的回发会导致工具提示"卡住"并且永远不会消失. (4认同)
  • 就我而言,我在执行 ajax 操作时禁用了提交按钮。当 ajax 进程运行时,由于按钮被禁用,工具提示将保留。一旦 ajax 过程完成,按钮将再次变为“可用”。将鼠标悬停在按钮上然后再离开会关闭工具提示。尼泰的解决方案解决了一切。现在,工具提示会在单击时隐藏,并且在按钮再次激活后悬停时仍然有效。 (2认同)

小智 17

使用引导程序 5

工具提示现在以普通/普通 Javascript 进行初始化。因为我在这里只看到了 JQuery 选项,所以让我用纯 JS 发布非常简单和直接的方法:

//Initialize bootstrap tooltips
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
var tooltipList = tooltipTriggerList.map( function(tooltipTriggerEl) {
  return new bootstrap.Tooltip(tooltipTriggerEl, {
  trigger : 'hover'
  });
});
Run Code Online (Sandbox Code Playgroud)

您只需添加“{trigger : 'hover'}”对象作为 bootstrap.Tooltip(element, options) 的选项。

来源: https: //getbootstrap.com/docs/5.1/components/tooltips/#usage

  • 对我不起作用。 (7认同)

csh*_*sql 14

这也可以通过在 HTML 中添加以下内容来实现:

 data-trigger="hover"

 <button type="button" data-toggle="tooltip" data-placement="top" data-trigger="hover" title="To re-enable scanning, click here">Text</button>
Run Code Online (Sandbox Code Playgroud)

  • 遗憾的是,这不起作用,工具提示仍然卡住。 (2认同)
  • 为我工作。(我只有 Bootstrap 4 和 jQuery) (2认同)

Kam*_*ola 8

在我的情况下,该问题仅在Internet Explorer中重现:无论哪个元素(输入,div等...)都有工具提示 - 如果点击 - 工具提示仍然显示.

在网上发现了一些推荐.hide()的解决方案.元素上的工具提示点击事件 - 但这是个坏主意 - 徘徊在同一个元素上 - 让它隐藏起来...在我的情况下

$('.myToolTippedElement').on('click', function () {
    $(this).blur()
})
Run Code Online (Sandbox Code Playgroud)

做了所有的魔术! - 其中.myToolTippedElement是有一个工具提示的元素...


小智 8

嗨,我没有解决这个问题.当其他解决方案不起作用时,请尝试以下方法:

$('body').tooltip({
        selector: '[data-toggle="tooltip"], [title]:not([data-toggle="popover"])',
        trigger: 'hover',
        container: 'body'
    }).on('click mousedown mouseup', '[data-toggle="tooltip"], [title]:not([data-toggle="popover"])', function () {
        $('[data-toggle="tooltip"], [title]:not([data-toggle="popover"])').tooltip('destroy');
    });
Run Code Online (Sandbox Code Playgroud)

这也是拖放的解决方案.所以我希望这有助于某人:)


spe*_*pec 7

在带有 bootstrap 4 和 jquery 的 angular 7 中,我发现了这个并且它工作正常。我使用 dispose 是因为它破坏了不会隐藏工具提示。

  ngAfterViewChecked() {
    $('[data-toggle="tooltip"]').tooltip({
      trigger: 'hover'
    });
    $('[data-toggle="tooltip"]').on('mouseleave', function () {
      $(this).tooltip('dispose');
    });
    $('[data-toggle="tooltip"]').on('click', function () {
      $(this).tooltip('dispose');
    });
   }
Run Code Online (Sandbox Code Playgroud)


Alp*_*pha 6

工作方案

$(document).on("click",function()
    {
    setTimeout(function()
    {

  $('[data-toggle="tooltip"]').tooltip('hide');

},500);    // Hides tooltip in 500 milliseconds
    });
Run Code Online (Sandbox Code Playgroud)


小智 5

我解决此问题的方法是使用以下代码删除单击事件函数中的工具提示:

$("#myButton").on("click", function() {
    $("div[role=tooltip]").remove();
});
Run Code Online (Sandbox Code Playgroud)