隐藏/显示Datatables插件的列?

问题描述:

我有一个类似的表:隐藏/显示Datatables插件的列?

<table id="table_id"> 
    <thead> 
     <tr> 
      <th>Column 1</th> 
      <th>Column 2</th> 
      <th>etc</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td>Row 1 Data 1</td> 
      <td>Row 1 Data 2</td> 
      <td>etc</td> 
     </tr> 
     <tr> 
      <td>Row 2 Data 1</td> 
      <td>Row 2 Data 2</td> 
      <td>etc</td> 
     </tr> 
    </tbody> 
</table> 

我希望能够做的就是把某种形象或链接的隐藏和显示列在<th>什么。当用户点击隐藏列时,我想将<th>的内部文本放在div中,当点击div时,我希望用户能够点击自己选择的列并将其放回该表并将其从div中删除。

我得到了datatables插件工作,并在网站上,它有一个隐藏/显示列的样本,但与外部链接。我能够添加一个链接来隐藏/显示一列,但这里是我的问题:

我不知道如何获得被点击的索引或列。 我不知道如何使用jquery从div中删除它。当我点击显示/隐藏时,它将它放入div中,但随后每次点击都会重复,我也可以在div中单击它,并根据当前状态显示/隐藏表格。

<script type="text/javascript"> 

     $(document).ready(function() { 
      $('#datatable').dataTable(); 

      $('.showhide').live('click', function() { 

       var index = $('#datatable th').index(); 

       fnShowHide(index); 
      }); 
     }); 

     function fnShowHide(iCol) { 
      var oTable = $('#datatable').dataTable(); 

      var bVis = oTable.fnSettings().aoColumns[iCol].bVisible; 

      oTable.fnSetColumnVis(iCol, bVis ? false : true); 

      var index = $('#datatable td').index(); 
      console.log(index); 

      $('#columns').append('<a href="#">' + oTable.fnSettings().aoColumns[index].sTitle + '<a/>'); 

     } 
    </script> 

<div id="columns"><h4>Columns</h4></div> 
    <table id="datatable" class="display"> 
    <thead> 
    <tr> 
    <th></th> 
    <th></th> 
    </tr> 
    </thead> 
    <tbody> 
    </tbody> 
    </table> 

我遗漏了一些表格数据。

+1

你试过了......什么? – 2013-05-02 23:20:00

+0

@ Ek0nomik - 已更新 – Xaisoft 2013-05-02 23:23:30

+0

如果您发布了您尝试过的代码,这将是有益的。调试起来更容易。 – 2013-05-02 23:24:55

我已膨胀的数据表折叠的行,以及如何我处理知道哪一行被点击是

1)分配一个元素ID到每个TR行,aaData包含我的数据,在所述数一个节点aaData的位置是我的唯一的标识符(如果它的第一个节点将是aaData [0])

$('#records').dataTable({ 
       "bJQueryUI": true, 
       "fnRowCallback": function(nRow, aaData, iDisplayIndex, iDisplayIndexFull) { 
               $(nRow).attr('id', aaData[1]); 
               return nRow; 
                  } , 
       "aoColumnDefs": [{ "bSortable": false, "aTargets": [ 0 ] }], 
       "aaSorting": [[ 1, "asc" ]] 
}); 

现在您的后续事件可以参考TR ID

$('#records tbody td img').on('click', function() { 
    var nTr = this.parentNode.parentNode; 
    if (this.src.match('details_close')) 
    { 
     /* This row is already open - close it */ 
     this.src = "../ci/images/details_open.png"; 
     dataTable.fnClose(nTr); 
    } ... }); 

*请注意,如果它的数字你可能想要追加一些文本之前,数字只有元素ID的可以创建JavaScript/jQuery的问题,我认为不符合HTML标准