【问题标题】:Bootstrap 5 update Tooltip Title with JavascriptBootstrap 5 使用 Javascript 更新工具提示标题
【发布时间】:2021-04-27 22:34:42
【问题描述】:

在 Bootstrap 4 中,我使用以下示例代码来更新工具提示的标题(其中 'statusIcon' 是元素,在本例中是一个很棒的字体图标,但相同的原则将适用于按钮或其他任何内容:

$(statusIcon).attr('data-original-title', 'Check Error logs for details').tooltip();

Razor 页面 html 元素:

<i class="fas fa-circle fa-lg" id="statusIcon:@item.Id" data-bs-toggle="tooltip" data-bs-placement="right" title="Started" data-bs-animation="false" style="font-size: 1.5em; color: #28A745"></i>

阅读 Bootrap 5 的手册,他们似乎没有告诉我们如何使用 Vanilla JS 实现这一目标

到目前为止我在 Javascript 中尝试过的内容:

var statusIconId = 'statusIcon:' + pluginId + '';
var statusIcon = document.getElementById(statusIconId);    
document.getElementById(statusIconId).setAttribute("data-bs-original-title", 'Check Error logs for details');

我在元素 ID 中使用变量,因为我正在使用 Razor 列表视图中的元素。

【问题讨论】:

    标签: javascript bootstrap-5 asp.net-core-5.0


    【解决方案1】:

    您可以通过更改data-bs-original-title 属性来更新工具提示标题

    $(function () {
    
      // Init
      $('[data-toggle="tooltip"]').tooltip()
      
      // Update jquery
      // $('#tt').attr('data-bs-original-title', 'New Tooltip Title');
      
      // Update js
      document.getElementById('tt').setAttribute('data-bs-original-title', 'New Tooltip Title');
    })
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet"/>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    
    <button type="button" id='tt' class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="Tooltip title">
      Tooltip
    </button>

    【讨论】:

    • 有没有办法在不回退到 jQuery 的情况下做到这一点?
    • 好的,请使用setAttribute查看我的编辑
    • 我已将剃刀代码添加到我的问题中,以显示元素的编写方式,我目前无法让您的解决方案正常工作,将继续摆弄......
    • 请分享一个sn-p,至少是一个minimal reproducible example
    • 现在更新了问题,如果我在问题中添加更多代码,这只会让人们混淆我正在尝试解决的问题。
    【解决方案2】:

    如果您的工具提示处于循环中,并且您想要更新单击的按钮工具提示,则此处是示例。

    用例:

    使用clipboard.js复制表格行中的按钮

    代码:

    index.blade.php

    <button type="button" data-bs-toggle="tooltip" data-bs-placement="top" title="Copy to clipboard" class="btn-clip btn btn-primary" data-clipboard-text="{{ user.domain }}">Copy</button>
    

    index.js

    let clipboard = new ClipboardJS('.btn-clip');
     
    clipboard.on('success', function (e) {
        let trigger_button = e.trigger;
    
        // update the tooltip title, get the tooltip instance, and show it
     
        trigger_button.setAttribute('data-bs-original-title', 'Copied!');
     
        let btn_tooltip = bootstrap.Tooltip.getInstance(trigger_button);
     
        btn_tooltip.show();
    
        // reset the tooltip title
     
        trigger_button.setAttribute('data-bs-original-title', 'Copy to clipboard');
        
    });
    

    【讨论】:

      【解决方案3】:

      由于Bootstrap 5.0不再需要jQuery,使用document.querySelector(),然后修改元素后重新初始化tooltip:

      // initialize
      const tooltipElement = document.querySelector('[data-bs-toggle="tooltip"]')
      let bsTooltip = new bootstrap.Tooltip(tooltipElement)
      
      // update
      tooltipElement.title = 'New Title'
      bsTooltip = new bootstrap.Tooltip(tooltipElement)
      <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" />
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css" integrity="sha512-HK5fgLBL+xu6dm/Ii3z4xhlSUyZgTT9tuc/hSrtw6uzJOvgRr2a9jyxxT1ely+B+xFAmJKVSTbpM/CuL7qxO8w==" crossorigin="anonymous" />
      <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js"></script>
      
      <i class="fas fa-circle fa-lg" id="statusIcon:@item.Id" data-bs-toggle="tooltip" data-bs-placement="right" title="Started" data-bs-animation="false" style="font-size: 1.5em; color: #28A745"></i>

      (更新为使用您的 Razor 页面元素)

      【讨论】:

      • 谢谢,我一定是做错了,因为我仍然无法让它工作,在你的 Run Code Nippet 中看到它工作正常。
      【解决方案4】:

      我必须执行以下操作才能使其与 Bootstrap 5 和 ClipboardJS 2 一起使用:

      <script src="js/clipboard.js"></script>
      <script src="js/jquery-3.6.0.js"></script>
      <script src="js/bootstrap.bundle.js"></script>
      
      <script>
      $(document).ready(function () {
      
        // Tooltip
      
        $('[data-bs-toggle="tooltip"]').tooltip()
      
        // Clipboard
      
        const clipboard = new ClipboardJS('.btn-clipboard')
      
        clipboard.on('success', function(e) {
      
          $('.tooltip-inner').html('Copied!')
          $(e.trigger).tooltip('update')
      
          e.clearSelection()
        })
      
        clipboard.on('error', function (e) {
          var fallbackMsg = /Mac/i.test(navigator.userAgent) ? 'Press \u2318 to copy' : 'Press Ctrl-C to copy'
      
          $('.tooltip-inner').html(fallbackMsg)
          $(e.trigger).tooltip('update')
        })
      })
      </script>
      
      
      <button type="button" class="btn btn-clipboard" data-clipboard-text="copied text" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Click/touch to copy">Button</button>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-05
        • 1970-01-01
        • 2021-08-12
        • 2011-10-02
        • 1970-01-01
        • 1970-01-01
        • 2022-08-20
        相关资源
        最近更新 更多