2014-04-15 39 views
0

我从我的数据源获取一个RecordID和一个标题。我只想在屏幕上显示标题列,但我需要该行中的RecordID用于点击事件。所以我把它们都拉进我的桌子,我正在寻找隐藏RecordID。如何隐藏表格列,但仍然使用点击事件? (JQuery Datatables)

我有一个填充了ajax源的表,因此我的数据的<tr><td>标记是动态创建的。他们不是代码的一部分,所以我不能简单地添加一个我可以用CSS隐藏的类。

<table id="example"> 
    <thead> 
     <tr> 
      <th>RecordID</th> 
      <th>TITLE</th> 
     </tr> 
    </thead> 
    <tbody> 
     <!---Data and tags are dynamically generated---> 
    </tbody> 
</table> 

的数据表文件列出了加入功能oTable.fnSetColumnVis(0, false)"bVisible":false属性的一对夫妇的选择。这两种工作都可以很好地隐藏我的列,但随后基于该列的单击事件将不再起作用。

这是我正在使用的点击事件。

$('#example').on('dblclick', 'tr', function(event) { 
var td = $('td', this); 
var RecordID= $(td[0]).text(); 
}); 

所以你可以看到它的访问索引0(该行中第一个TD或列)。一旦我隐藏列,另一个TD变为0 指数我仍然需要的recordId柱得到来自该行的信息,但我不想在屏幕上显示它。有任何想法吗?

+0

如果您不需要ID列,为什么不直接在标题行上添加ID作为属性。 – Hatsjoem

+1

如果您使用数据表fnSetColumnVis方法,则该列将不适用于任何JavaScript操作。尝试使用jquery隐藏列,通过设置显示样式。 – hanskishore

+0

如果我尝试这个,它只隐藏标题行。 ('+(columnIndex + 1)+'),#example th:nth-​​child('+ columnIndex + 1)+')')。 hide();} hideColumn(0);' – madvora

回答

1

我在声明表时通过添加一个类来解决这个问题。

$(document).ready(function() { 
var oTable = $('#example').dataTable({ 
    "bJQueryUI": true, 
    "bProcessing": false, 
    "bServerSide": false, 
    "bFilter":false, 
    "bPaginate":false, 
    "bInfo":false, 
    "bSort":false, 
    "bAutoWidth":false, 
    "sAjaxSource": "datasource.cfm", 
    "aoColumns": [ 
     { "mData": "RecordID", "sClass":"testclass" }, 
     { "mData": "TITLE" } 
    ] 
}); 
}); 

然后是CSS

.testclass { 
display:none; 
} 

了jQuery在此之后仍然有效。

+0

这也适用于我! @madvora – madhu