我确信这在某种程度上是可能的,但我正在做的事情是行不通的。
$('#campaign_creative_performance-table #show_thumb').change(function() {
var show = ($(this).is(':checked')) ? true : false,
oTable = $('#campaign_creative_performance-table table.sortable').dataTable();
oTable.fnSetColumnVis(14, show ? false : true);
oTable.fnSetColumnVis(15, show);
});
这应该隐藏第 14 列并显示第 15 列,反之亦然。
它所做的是交换列标题并更改列的宽度,但内容没有改变。
我尝试将重绘标志放在第一个标志上,但没有任何变化。
附加信息: 我通过 sAjaxSource 获取数据并通过 fnRowCallback 对其进行格式化。这两列的格式如下所示:
$('td:eq(14)', nRow).html('<p class="limit160" title="'+aData[14]+'">'+aData[14]+'</p>');
$('td:eq(15)', nRow).html('<img src="'+aData[15]+'" />');
进一步调查 问题在于 fnRowCallback 中的格式设置。隐藏第 14 列,将 15 变为 14,因此数据是从 aData 14 而不是 15 获取的。因此需要对格式化程序进行某种测试,以找出它实际在做什么......或者不要使用 $ ('td:eq(14)') 来确定列。我只是不知道该怎么做。
一个简化的示例在http://jsfiddle.net/nbscb/ 请注意,当检查“单击我”时,Col3的数据是不正确的。