web-dev-qa-db-ja.com

データテーブル列の名前を取得する方法は?

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

そこで名前を取得するための適切な関数またはプロパティは何ですか?

21
Anna T

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

デモ->http://jsfiddle.net/6fstLmb6/

47
davidkonrad

以下は APIドキュメント に従って動作するはずです:

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

});
0
James Jithin