jQuery DataTables隐藏列而不从DOM中删除它

我需要隐藏列以显示在jquery数据表中。 当我使用bVisible属性隐藏列时,它会从DOM中消失。

我想将列的表格单元格的显示属性设置为无,以便这些值不会出现在视图中,但它们仍然应该存在于DOM中,因为我隐藏的列唯一地标识了行,我需要知道唯一的行选择ID。 如何实现这一目标。

我使用服务器端分页使用aaData属性填充表。

看看这个问题,但这些选项将其从DOM中删除。 jquery datatables隐藏列

您应该使用className以及columnDefs或列 ,

像这样在你的CSS中定义hide_column

 .hide_column { display : none; } 

您有两种方法来分配.hide_column类:

使用columnDefs (将自定义类分配给第一列):

 $('#example').DataTable( { columnDefs: [ { targets: [ 0 ], className: "hide_column" } ] } ); 

OR columns

 $('#example').DataTable( { "columns": [ { className: "hide_column" }, null, null, null, null ] } ); 

从这里获取的代码片段


老答案

尝试添加

 "sClass": "hide_column" 

应该隐藏该列…

以Daniel的答案为基础:

CSS:

 th.hide_me, td.hide_me {display: none;} 

在datatables init中:

 "aoColumnDefs": [ { "sClass": "hide_me", "aTargets": [ 0 ] } ] // first column in visible columns array gets class "hide_me" 

请记住将您隐藏的类添加到您的thead单元格中:

  First Column Second Column Third Column  

如果您正在使用服务器端处理并希望从ajax源传入数据而不在数据表中可见,那么这也是一种有用的策略。 您仍然可以在前端检索列的值而无需显示它。 有助于通过隐藏数据值等进行过滤

例:

 // In datatables init file  

如果要隐藏多个列:

 $('#example').dataTable({ "columnDefs": [{ "targets": [0,1,3], //Comma separated values "visible": false, "searchable": false } ] }); 

这是我对你的贡献。

不确定代码是否正确但是它的工作。

如果你有像我这样的多个设置栏。

 $('#example').dataTable( { "columnDefs": [ { "targets" : 'no-sort', "orderable": false, "order": [], }], "columnDefs": [ { "targets" : 'hide_column', "orderable": false, "order": [], "visible": false }] } ); 

您可以使用方法hide

 $(element).hide(); 

要显示元素,请使用方法show

 $(element).show(); 

要获取所需的列,可以使用jquery中n-th child选择器。