Change table columns order by name
Change table columns order by name
HTML
<table style="width: 300px;">
<tr>
<th>Column A</th>
<th>Column B</th>
<th>Column C</th>
</tr>
<tr>
<td>Column 1</td>
<td>Column 2</td>
<td>Column 3</td>
</tr>
<tr>
<td>Column 1</td>
<td>Column 2</td>
<td>Column 3</td>
</tr>
</table>
JavaScript
var new_table = [
{
name: "Column C",
index: 0, // actual index
cols: []
},
{
name: "Column A",
index: 0,
cols: []
},
{
name: "Column B",
index: 0,
cols: []
},
]
jQuery.moveColumn = function (table, from, to) {
var list_th = jQuery('th', table);
for (let i = 0; i < Object.keys(list_th).length-2; i++) {
list_th[i];
new_table.find(e => e.name == list_th[i].textContent).index = i
}
console.log("Add actual index", new_table);
var rows = jQuery('tr', table);
var num_rows = Object.keys(rows).length-2
console.log("num_rows", num_rows);
for (let j = 0; j < num_rows; j++) {
for (let k = 0; k < Object.keys(list_th).length-2; k++) {
new_table.find(e => e.index == k).cols.push(jQuery(rows[j]).children()[k])
}
jQuery(rows[j]).empty("td");
new_table.forEach(e => {
jQuery(rows[j]).append(e.cols[j])
});
}
// console.log("Add cols", new_table);
}
var tbl = jQuery('table');
jQuery.moveColumn(tbl);