How to add tooltip to table header

17,546

CAUSE

There are multiple issues with your code:

  • You have incorrect CSS selectors, you should be targeting th elements and not tr.
  • initComplete is a proper place to do this since you only need to do it once.

DEMO

My example below is for Bootstrap Tooltip. Adjust to your tooltip plugin accordingly.

$(document).ready(function() {  
    var table = $('#example').DataTable( {     
        "ajax": 'https://api.myjson.com/bins/qgcu',
        "initComplete": function(settings){
            $('#example thead th').each(function () {
               var $td = $(this);
               $td.attr('title', $td.text());
            });

            /* Apply the tooltips */
            $('#example thead th[title]').tooltip(
            {
               "container": 'body'
            });          
        }  
    }); 
});
<link href="//cdn.datatables.net/1.10.7/css/jquery.dataTables.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script src="//cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js"></script>

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">

<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> 

<table id="example" class="display">
<thead>
    <tr>
        <th>Name</th>
        <th>Position</th>
        <th>Office</th>
        <th>Salary</th>
        <th>Start Date</th>
    </tr>
</thead>

<tfoot>
    <tr>
        <th>Name</th>
        <th>Position</th>
        <th>Office</th>
        <th>Salary</th>
        <th>Start Date</th>      
    </tr>
</tfoot>
</table>
Share:
17,546
james Makinde
Author by

james Makinde

Updated on June 04, 2022

Comments

  • james Makinde
    james Makinde almost 2 years

    I'm using jQuery DataTables and I have been trying to add tooltips to the Header column of my datatables for the past 2 days to no avail.

    I have used the example on the datatables website where tooltips were added to the row data, but that didn't work. I only see one tooltip, and it does not even get the title of the column.

    Below is the code I have so far.

    if (oTable != null) {
        oTable.fnClearTable();
        oTable.fnAddData(columnData);
    } else {
    
        oTable = $('#caseDataTable').dataTable({
            "bDestroy": true,
            "aaData": columnData,
            "aoColumnDefs": columnNames,
            bFilter: true,
            bAutoWidth: true,
            autoWidth: true,
            "responsive": true,
            dom: 'Bfltip',
            buttons: [
                {
                    extend: 'colvis',
                    postfixButtons: ['colvisRestore'],
                    collectionLayout: 'fixed two-column'
                }
            ],
            "fnDrawCallback": function() {
                if (typeof oTable != 'undefined') {
                    $('.toggleCheckBox').bootstrapToggle({});
                }
    
                $('#caseDataTable thead tr').each(function () {
                    var sTitle;
                    var nTds = $('td', this);
                    var columnTitle= $(nTds[0]).text();
    
                     this.setAttribute('title', columnTitle);
                });
    
                /* Apply the tooltips */
                $('#caseDataTable thead tr[title]').tooltip({
                    "delay": 0,
                    "track": true,
                    "fade": 250
                });
            }
        });
    }