如何遍历jQuery Datatables中的所有列标题

问题描述

我正在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它可以按预期工作,但不会根据条件隐藏列。它只是隐藏表中的第一列