【问题标题】:Bootstrap 3 Tooltip flickersBootstrap 3 工具提示闪烁
【发布时间】:2018-08-27 21:34:51
【问题描述】:

我有一个带有工具提示的 Bootstrap 3 按钮。单击按钮时,工具提示会显示然后淡出。第二次单击时,工具提示会闪烁并且不会很好地淡出。但是当第三次点击时,行为又像预期的那样。

更新:以下代码适用于 Bootstrap 3.0.0,但不适用于 Bootstrap 3.3.7。

$('[data-toggle="tooltip"]').tooltip({
  trigger: 'click',
  placement: 'bottom'
});

function setTooltip(node, message) {
  node.attr('data-original-title', message)
    .tooltip('show');
}

function hideTooltip(node) {
  setTimeout(function() {
    node.tooltip('hide');
  }, 1000);
}

$('.btn').on('click', function() {
  var node = $(this);
  var msg = node.attr('data-title');
  setTooltip(node, msg);
  hideTooltip(node);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />

<button type='button' class='btn btn-primary' data-title='Tooltip' data-toggle='tooltip'>Click me</button>

【问题讨论】:

    标签: javascript jquery twitter-bootstrap


    【解决方案1】:

    您应该使用trigger: 'manual',以便控制工具提示的显示或隐藏方式。

    $('[data-toggle="tooltip"]').tooltip({
      trigger: 'manual',
      placement: 'bottom'
    });
    
    function showTooltip(node) {
      node.tooltip('show');
    }
    
    function hideTooltip(node) {
      setTimeout(function() {
        node.tooltip('hide');
      }, 1000);
    }
    
    $('.btn').on('click', function() {
      var node = $(this);
      showTooltip(node);
      hideTooltip(node);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
    
    <button type="button" class="btn btn-primary" data-title="Tooltip" data-toggle="tooltip">Click me</button>

    【讨论】:

      【解决方案2】:

      给你一个解决方案

      $('.btn').on('click', function() {
        var node = $(this);
        var msg = node.attr('data-title');
        node.attr('data-original-title', msg)
          .tooltip('show');
        setTimeout(function() {
          node.tooltip('hide');
        }, 1000);
      });
      
      $('.btn').on('mouseleave', function() {
        $(this).tooltip('hide');
      });
      <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
      <script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
      
      <button type='button' class='btn btn-primary' data-placement='bottom' data-title='Tooltip' data-toggle='tooltip' data-trigger='manual'>Click me</button>

      希望对你有帮助

      【讨论】:

      • @FastSnail 你遇到了什么错误??
      • @FastSnail 错误已修复。
      猜你喜欢
      • 2011-10-15
      • 1970-01-01
      • 2012-09-13
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多