関数に -array を動的に生成させないのはなぜaoColumns
ですか?
// function that generates the aoColumns-array based on the tables <thead>
// columns beyond #3 get a fixed 25px width (just to be illustrative)
// expand the switch if certain columns need certain fixed widths
function aoColumns() {
var ao = [];
$("#table th").each(function(i) {
switch (i) {
case 0 :
ao.push({"sWidth": "50px"});
break;
case 1 :
ao.push({"sWidth": "100px"});
break;
case 2 :
ao.push({"sWidth": "100px"});
break;
default :
ao.push({"sWidth": "25px"});
break;
}
});
return ao;
}
$(document).ready(function () {
var table = $('#table').dataTable({
aoColumns: aoColumns()
});
});
このアプローチを使用すると、テーブルの列数が 1、3、または 1000 であっても、データテーブルは正しく初期化されます。
インデックスではなく各列のキャプションに基づいて列幅を評価する場合は、aoColumn-function を少し変更する必要があります。
function aoColumns() {
var ao = [];
$("#table th").each(function(i, th) {
var caption=$(th).text();
switch (caption) {
case 'A' :
ao.push({"sWidth": "50px"});
break;
case 'B' :
ao.push({"sWidth": "100px"});
break;
/*...
and so on
...*/
default :
ao.push({"sWidth": "25px"});
break;
}
});
return ao;
}