Search code examples
javascriptjquerytwitter-bootstraptooltip

Bootstrap Tooltip - Hide when another tooltip is click


I hope someone can help.

I'm trying to hide the tooltip when another tooltip icon is clicked. It works but when I decide to click the last tooltip again it 'flashes' the tooltip.

var Hastooltip = $('.hastooltip');
HasTooltip.on('click', function(e) {
     e.preventDefault();
     HasTooltip.tooltip('hide');
}).tooltip({
     animation: true
}).parent().delegate('.close', 'click', function() {
     HasTooltip.tooltip('hide');
});

HTML

<a href="#" class="hastooltip" data-original-title="Lorem ipsum dolor sit amet, consectetur adipisicing elit.">
    <h3>Info 1</h3>
</a>

<a href="#" class="hastooltip" data-original-title="Lorem ipsum dolor sit amet, consectetur adipisicing elit.">
    <h3>Info 2</h3>
</a>

If it helps a following markup is added to the DOM when the user clicks on the button to display the tooltip.

<div class="tooltip"</div>

Solution

  • You need to check if the tooltip is showing and toggle its visibility manually. This is one way of doing it.

    $(function() {
      var HasTooltip = $('.hastooltip');
      HasTooltip.on('click', function(e) {
        e.preventDefault();
        var isShowing = $(this).data('isShowing');
        HasTooltip.removeData('isShowing');
        if (isShowing !== 'true')
        {
          HasTooltip.not(this).tooltip('hide');
          $(this).data('isShowing', "true");
          $(this).tooltip('show');
        }
        else
        {
          $(this).tooltip('hide');
        }
    
      }).tooltip({
        animation: true,
        trigger: 'manual'
      });
    });