javascript - Bootstrap 5 : make tooltip hoverable and link clickable

标签 javascript bootstrap-5 bootstrap-popover popper.js twitter-bootstrap-tooltip

有时您希望在工具提示中包含链接并使其可单击。因为我没有找到 bootstap 5 的任何好的答案,所以我花了一些时间才弄清楚我想分享它。

默认的 Bootstrap 5 工具提示初始化如下所示:

var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
        
new bootstrap.Tooltip(tooltipTriggerEl);

当您将鼠标悬停在工具提示上(并将鼠标悬停在原始元素上)时,如何保持工具提示可见?

最佳答案

我修改了@V1Pr's answer并提出了 Vanilla JS 方法:

 const tooltipTriggerList = [].slice.call(
    document.querySelectorAll('[data-bs-toggle="tooltip"]')
  );
  const tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
    const tooltip = new bootstrap.Tooltip(tooltipTriggerEl, {
      trigger: "manual",
    });

    let tooltipTimeout;
    let currentToolTip;

    tooltipTriggerEl.addEventListener("mouseenter", function () {
      let toolTipID;
      
      // Clear Set Timeout
      clearTimeout(tooltipTimeout);

      // Show Tooltip
      tooltip.show();

     // Assign current tooltip ID to toolTipID variable
      toolTipID = tooltipTriggerEl.getAttribute("aria-describedby");

      // Assign current tooltip to currentToolTip variable
      currentToolTip = document.querySelector(`#${toolTipID}`);

      // Hide tooltip on tooltip mouse leave
      currentToolTip.addEventListener("mouseleave", function () {
        tooltip.hide();
      });
    });

   
    tooltipTriggerEl.addEventListener("mouseleave", function () {
      // SetTimeout before tooltip disappears
      tooltipTimeout = setTimeout(function () {
        // Hide tooltip if not hovered.
        if (!currentToolTip.matches(":hover")) {
          tooltip.hide();
        }
      }, 100);
    });

    return tooltip;
  });

HTML:

<span data-bs-toggle="tooltip" data-bs-html="true" title="Check out <a class='text-white opacity-75' href='#'>this link</a>">
 <i class="bi bi-info-square"></i>
</span>

关于javascript - Bootstrap 5 : make tooltip hoverable and link clickable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67993080/

相关文章:

bootstrap-popover - 如何从 Bootstrap 中的弹出窗口获取弹出窗口

c# - 如何使用 C# 代码填充引导模式?

javascript - 实现可折叠: how to determine which section is open?

javascript - 单击按钮时不会转到网址

javascript - 有没有办法保存以前的 html 页面并在重新加载时将其加载到当前页面?

ruby-on-rails - Rails 6 无法部署到 Heroku : ModuleNotFoundError: Module not found: Error: Can't resolve '@popperjs/core' in '/tmp

html - 如何在 Bootstrap 中垂直排序网格

html - 使用从右到左的语言显示 Bootstrap 弹出窗口

javascript - 从对象数组中删除对象项并在 Node js中分组

javascript - 从js函数返回的数据未到达调用函数