如何获取datatable列的名称?

Ann*_*a T 21 javascript jquery datatables

我正在使用DataTable 1.10.9(来自https://datatables.net).数据表的列在javascript的初始化步骤中定义,每列都有唯一的名称,例如:

var table = $('#example').DataTable({
            columns: [
                { name: 'first-name' },
                { name: 'last-name' },
                { name: 'position' },
                { name: 'location' },
                { name: 'salary' }
            ]
        });
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过我给它的名字从表中获取列,但我似乎无法找到如何从列对象中找到列的名称.(我希望可以使用组件的当前状态.)例如:

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

获得这个名字的正确功能或属性是什么?

dav*_*rad 48

您可以检索通过初始化选项table.settings().init()-由该columns定义是这样的:

var columns = table.settings().init().columns;
Run Code Online (Sandbox Code Playgroud)

单击单元格/ <td>您可以找到列索引(隐藏列的最佳实践):

var colIndex = table.cell(this).index().column;
Run Code Online (Sandbox Code Playgroud)

单击column.name单元格的示例,单击单元格时会提醒相应的单击处理程序

$("#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);
})
Run Code Online (Sandbox Code Playgroud)

你的every()例子就是

var columns = table.settings().init().columns;
table.columns().every(function(index) { 
    console.log(columns[index].name);
})  
Run Code Online (Sandbox Code Playgroud)

演示 - > http://jsfiddle.net/6fstLmb6/

  • 我不可能是唯一一个发现他们的 api 如此落后的人吧? (3认同)
  • 接受它作为 every() 的一部分将适用于我在问题中给出的示例。 (2认同)

小智 5

下面的代码对我有用

this.api().columns().every(function() {
  console.log( this.header().textContent )
})
Run Code Online (Sandbox Code Playgroud)

您还可以仅为特定的列名称添加特定的 html 类,例如拥有该类

this.api().columns(".myColumnClass").every(function() {
  console.log( this.header().textContent )
})
Run Code Online (Sandbox Code Playgroud)