How to get name of datatable column?

Tags: , ,

I’m using DataTable 1.10.9 (from Columns for the datatable are defined at the initialization step in javascript and each column has a unique name, e.g.:

var table = $('#example').DataTable({
            columns: [
                { name: 'first-name' },
                { name: 'last-name' },
                { name: 'position' },
                { name: 'location' },
                { name: 'salary' }

I know I can get the column from the table by the name I’ve given it, but I can’t seem to find how to find a column’s name from the column object. (I’m hoping it’s possible with the current state of the component.) For example:

        table.columns().every(function() {
            //I'd want to see what the name of this column is, something like:
            console.log(; //will throw an exception since no such function exists
            console.log(; //will output 'undefined'

What’s the proper function or property to get the name there?


You can retrieve the initialization options through table.settings().init() – and by that the columns definition this way :

var columns = table.settings().init().columns;

When clicking on a cell / <td> you can find the column index by (best practice in case of hidden columns) :

var colIndex = table.cell(this).index().column;

An example of a click handler that alerts the corresponding when a cell is clicked

$("#example").on('click', 'td', function() {
    //get the initialization options
    var columns = table.settings().init().columns;
    //get the index of the clicked cell
    var colIndex = table.cell(this).index().column;
    alert('you clicked on the column with the name '+columns[colIndex].name);

Your every() example would be

var columns = table.settings().init().columns;
table.columns().every(function(index) { 

demo ->

Source: stackoverflow