Jquery 数据表在行中隐藏/显示类

Jquery 数据表在行中隐藏/显示类,jquery,datatables,Jquery,Datatables,我试图在触发事件时切换Datatables行中某些div或span的可见性(我无法隐藏/显示列) 这大概是我的剧本 我有一个500行的DataTables表\ <button class="btn btn-primary" id="testbutton">hide/show</button> <table id="tableUserTest" class="dataTable" st

我试图在触发事件时切换Datatables行中某些div或span的可见性(我无法隐藏/显示列)

这大概是我的剧本

我有一个500行的DataTables表\

<button class="btn btn-primary" id="testbutton">hide/show</button>

<table id="tableUserTest" class="dataTable" style="width:100%">
  <thead>
    <tr>
      <th>column</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>7958<span class="table-evo">some stuff</span></td>
    </tr>
    <!-- many more rows -->
  </tbody>
</table>
我有一个按钮来切换这个类,它会触发事件

等待的结果:所有行都已切换span.table-evo。 但是,它只影响可见行

我已经读到直接使用jquery来更改Datatables实例是不好的,但是如果不从api中隐藏/显示列,我无法找到解决方案,在stackoverflow上也是如此:(

欢迎任何帮助:)


干杯

您可以按如下方式使用DataTables API:

$("#testbutton").on("click", function(e) {
  var nodes = myTable.cells( ':has(.table-evo)' ).nodes().to$();
  $(".table-evo", nodes).toggle();
});
myTable
变量假定您已定义了数据表并将其分配给变量:

var myTable = $('#tableUserTest').DataTable( {...} );
以下命令

myTable.cells( ':has(.table-evo)' )
…选择包含具有
table\u evo
类的任何子元素的所有DataTables单元格。DataTables在此函数中支持jQuery选择器

然后,
nodes()
函数为这些数据表单元格选择
DOM节点

这在DataTable中的整个数据集上运行,而不仅仅是当前页面上呈现的DOM元素。这一点很重要,因为这意味着我们正在对需要切换的整个节点集进行操作——即使是那些由于数据表分页而未显示的节点

函数将这些DOM节点转换为jQuery对象


之后,您可以对所选节点中的类执行
toggle()
$(“.table evo”,nodes)。toggle()

无需详细信息:查看datatables行渲染回调。渲染行时,根据需要隐藏/显示。或者,如果这适用于表中的所有行,则向表的父div添加一个类并使用css。示例:@freedomn-m谢谢你的建议,实际上我没有想到这个简单的技巧,但它很好用!
myTable.cells( ':has(.table-evo)' )