Search code examples
javascriptjquerytwitter-bootstraptooltip

Bootstrap tooltip pushed my right side contents away


I added tooltip in my table's 2nd column but it is pushiing my last column away.

$(document).ready(function(){
  $('[data-toggle="tooltip"]').tooltip();   
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">

<div class="container">
  <table class="table">
    <thead>
      <tr>
        <th>Firstname</th>
        <th>Lastname</th>
        <th>Email</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>Default</td>
        <td data-toggle="tooltip" data-placement="top" title="Hooray!">Defaultson</td>
        <td>[email protected]</td>
      </tr>      
      <tr class="success">
        <td>Success</td>
        <td data-toggle="tooltip" data-placement="top" title="Hooray!">Doe</td>
        <td>[email protected]</td>
      </tr>
    </tbody>
  </table>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>


Solution

  • You can just add data-container="body" in your HTML in this way:

    $(document).ready(function(){
      $('[data-toggle="tooltip"]').tooltip();
    });
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
    
    <div class="container">
      <table class="table">
        <thead>
          <tr>
            <th>Firstname</th>
            <th>Lastname</th>
            <th>Email</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>Default</td>
            <td data-toggle="tooltip" data-container="body" data-placement="top" title="Hooray!">Defaultson</td>
            <td>[email protected]</td>
          </tr>      
          <tr class="success">
            <td>Success</td>
            <td data-toggle="tooltip" data-container="body" data-placement="top" title="Hooray!">Doe</td>
            <td>[email protected]</td>
          </tr>
        </tbody>
      </table>
    </div>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>

    or can add {container: 'body'} to your JavaScript in this way:

    $(document).ready(function(){
      $('[data-toggle="tooltip"]').tooltip({container: 'body'});
    });
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
    
    <div class="container">
      <table class="table">
        <thead>
          <tr>
            <th>Firstname</th>
            <th>Lastname</th>
            <th>Email</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>Default</td>
            <td data-toggle="tooltip" data-placement="top" title="Hooray!">Defaultson</td>
            <td>[email protected]</td>
          </tr>      
          <tr class="success">
            <td>Success</td>
            <td data-toggle="tooltip" data-placement="top" title="Hooray!">Doe</td>
            <td>[email protected]</td>
          </tr>
        </tbody>
      </table>
    </div>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>

    EDIT:

    If you want your tooltip to be on text instead of td you can create an inner element like span and add tooltip on that item. Try this way:

    $(document).ready(function(){
      $('[data-toggle="tooltip"]').tooltip();
    });
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
    
    <div class="container">
      <table class="table">
        <thead>
          <tr>
            <th>Firstname</th>
            <th>Lastname</th>
            <th>Email</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>Default</td>
            <td>
              <span data-toggle="tooltip" data-container="body" data-placement="top" title="Hooray!">Defaultson</span>
            </td>
            <td>[email protected]</td>
          </tr>      
          <tr class="success">
            <td>Success</td>
            <td>
              <span data-toggle="tooltip" data-container="body" data-placement="top" title="Hooray!">Doe</span></td>
            <td>[email protected]</td>
          </tr>
        </tbody>
      </table>
    </div>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>