如何获取datatable列的名称?

时间:2015-09-16 01:27:38

标签: 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' }
            ]
        });

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

        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'
        });

获得该名称的正确功能或属性是什么?

5 个答案:

答案 0 :(得分:43)

您可以通过table.settings().init()检索初始化选项 - 并以此方式检索columns定义:

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

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

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

点击处理程序的一个示例,用于在单击单元格时警告相应的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);
})

您的every()示例

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

演示 - &gt;的 http://jsfiddle.net/6fstLmb6/

答案 1 :(得分:0)

根据API document

,以下内容适合您
var tableColumns = [{
    name: 'first-name'
}, {
    name: 'last-name'
}, {
    name: 'position'
}, {
    name: 'location'
}, {
    name: 'salary'
}]

var table = $('#example').DataTable({
    tableColumns
});

table.columns().every(function (index) {

    console.log(tableColumns[index].name);

});

答案 2 :(得分:0)

您可以尝试使用另一种方法。 “ index ”变量是 thead 的一列。此方法将获取表的thead列,并读取标记中的文本。

dataTable.column(index).header().textContent

答案 3 :(得分:0)

下面的代码对我有用

this.api().columns().every(function() {
  console.log( this.header().textContent )
})

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

this.api().columns(".myColumnClass").every(function() {
  console.log( this.header().textContent )
})

答案 4 :(得分:-2)

Documentation显示columns().every()this设置为当前列的column()对象。对列对象的进一步检查表明它具有column().data()方法,该方法将列包含的数据作为值数组返回。这应该提供您需要的数据。