问题描述
我正在Datatables中使用“ fnDrawCallback”来获取我正在使用以下代码的所有列标题名称()。
"fnDrawCallback": function () {
table.column().every( function () {
var data = this.data();
var title = table.columns().header();
console.log($(title).html());
} );
我可以获取第一列的列标题名称。我想知道如何遍历表中的所有列并获取所有标头()名称?
解决方法
我知道最简单的方法是在drawCallback
选项中使用一些jQuery:
<script type="text/javascript">
$(document).ready(function() {
$('#example').DataTable( {
"drawCallback": function ( settings ) {
$('#example thead tr th').each(function() {
console.log( $(this).html() );
});
}
} );
} );
</script>
我使用的是较新的drawCallback
,而不是较旧的旧版fnDrawCallback
(但两者都可以使用)。
仅需注意:在您的问题中,您使用的是table.column().every( function () {...}
。在您的示例中,我看不到如何定义table
变量。因此,如果我建议的方法不合适,也许您可以编辑问题以显示使用fnDrawCallback
的上下文。
更新
如果您要根据列标题的名称隐藏一个或多个列,则可以采用上述代码并按如下所示对其进行修改:
<script type="text/javascript">
$(document).ready(function() {
$('#example').DataTable( {
"drawCallback": function ( settings ) {
var tbl = $('#example').DataTable();
var colIndex = 0;
$('#example thead tr th').each(function() {
var colHeading = $(this).html();
if (colHeading === 'Office' || colHeading === 'Age') {
tbl.columns( colIndex ).visible( false );
}
colIndex += 1;
});
}
} );
} );
</script>
在上面的示例中,我有一个表,其中在绘制表时隐藏了“ Office”和“ Age”列。
, var table = $('#contracts').DataTable( {
"drawCallback": function ( settings ) {
$('#contracts thead tr th').each(function() {
// var title = table.column().th();
// table.column( this ).column;
var head = $(this).text();
console.log(head);
if ($(this).text() == "" ) {
console.log("abc");
table.column().visible(false);
}
else {
table.column().visible( true );
}
});
}
});
@andrewjames它可以按预期工作,但不会根据条件隐藏列。它只是隐藏表中的第一列