如何使用 vanilla JS 管理动态创建的 bootstrap.Tooltip() ?

发布于 2025-01-11 13:19:39 字数 1820 浏览 0 评论 0原文

您好,我正在开发一个多页面注册系统,我想为每个指示器提供一个工具提示(始终可见),如下图所示。

屏幕截图 1

但是:

  • 我注意到,当我使用 和 Javascript 创建工具提示时,如下所示,它仅适用于悬停事件。

  • 当我使用 new bootstrap.Tooltip() 创建它时,只要我调用 .show() 函数,它就会按预期工作,如下所示代码。

(仅供参考,图像中显示的第一个工具提示实际上是 ,我将鼠标悬停在上面。bootstrap.Tooltip() 具有样式display: none 仅适用于蓝色指示器,因此 bootstrap.Tooltip()display 的情况下重叠: block)

我还注意到一些奇怪的事情是,当通过 newbootstrap.Tooltip() 创建工具提示时,会出现一个新的

在页面顶部创建,它将具有 的信息,但不会采用 id 或 className。它有自己的ID,在每次页面重新加载时都是随机的(例如tooltip768493、tooltip714418、tooltip9188236)

我想弄清楚的是如何设置默认的classNameid 在每个 bootstrap.Tooltip() 上,以便我可以动态更改其标题,如下所示:

  • 蓝色 - 您在这里
  • 红色 - 缺少或无效
  • 绿色 - 有效
  • 灰色 - 可选

以下是我创建工具提示目标的方法:

   //in a for loop create 6 spans to hold tooltips:

   //Indicator Progress Span (above bullet with text) 
   span = document.createElement("span");
   span.className = "indicator-tooltip-target";
   span.style.zIndex = "3";
   span.setAttribute("data-toggle","tooltip");
   span.setAttribute("data-original-title", "test");
function show_tooltips(){
    let tooltips_target = document.getElementsByClassName("indicator-tooltip-target");
    for(var i=0; i<tooltips_target.length; i++){
        let tooltip = new bootstrap.Tooltip(tooltips_target[i]);
        tooltip.show();
    }
}

Hi I'm working on a multi-page registration system and I want to provide a tooltip (ALWAYS VISIBLE) for each indicator as shown in my image bellow.

screenshot 1

HOWEVER:

  • I have noticed that when I create my tooltips using the <span> with Javascript as shown below, it will only work with hover event.

  • And when I create it with new bootstrap.Tooltip() it will work as intended as long as I call the .show() function as shown below in the code.

(FYI, the first tooltip shown in the image is actually the <span> and I'm hovering the mouse. The bootstrap.Tooltip() has style display: none only for blue indicator. So both <span> and bootstrap.Tooltip() overlap in case of display: block)

Something strange that I have also noticed is that when a tooltip is created via newbootstrap.Tooltip() a new <div> is created at the top of the page which will have the information of the <span> but will not take the id or className. It has it's own id which is random on every page reload (e.g. tooltip768493, tooltip714418, tooltip9188236)

What I'm trying to figure out is how to set a default className or id on each of the bootstrap.Tooltip() so that I can change their title dynamically as shown below:

  • Blue - You are here
  • Red - Missing or Invalid
  • Green - Valid
  • Grey - Optional

Here is how I created the tooltip targets:

   //in a for loop create 6 spans to hold tooltips:

   //Indicator Progress Span (above bullet with text) 
   span = document.createElement("span");
   span.className = "indicator-tooltip-target";
   span.style.zIndex = "3";
   span.setAttribute("data-toggle","tooltip");
   span.setAttribute("data-original-title", "test");
function show_tooltips(){
    let tooltips_target = document.getElementsByClassName("indicator-tooltip-target");
    for(var i=0; i<tooltips_target.length; i++){
        let tooltip = new bootstrap.Tooltip(tooltips_target[i]);
        tooltip.show();
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文