J'utilise DataTable 1.10.9 (de https://datatables.net ). Les colonnes pour le datatable sont définies à l'étape d'initialisation en javascript et chaque colonne a un nom unique, par exemple:
var table = $('#example').DataTable({
columns: [
{ name: 'first-name' },
{ name: 'last-name' },
{ name: 'position' },
{ name: 'location' },
{ name: 'salary' }
]
});
Je sais que je peux obtenir la colonne de la table par le nom que je lui ai donné, mais je n'arrive pas à trouver comment trouver le nom d'une colonne à partir de l'objet de colonne. (J'espère que c'est possible avec l'état actuel du composant.) Par exemple:
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'
});
Quelle est la fonction ou la propriété appropriée pour obtenir le nom ici?
Vous pouvez récupérer les options d'initialisation via table.settings().init()
- et par là même la définition columns
de cette façon:
var columns = table.settings().init().columns;
Lorsque vous cliquez sur une cellule/<td>
, vous pouvez trouver l'index de colonne par (meilleure pratique en cas de colonnes cachées):
var colIndex = table.cell(this).index().column;
Un exemple de gestionnaire de clic qui alerte le column.name
correspondant quand une cellule est cliquée
$("#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);
})
Votre exemple every()
serait
var columns = table.settings().init().columns;
table.columns().every(function(index) {
console.log(columns[index].name);
})
démo -> http://jsfiddle.net/6fstLmb6/
Ce qui suit devrait fonctionner pour vous selon le document 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);
});