jQuery Datatables:如何提取行标题?

时间:2013-04-19 18:05:22

标签: jquery datatables

编辑:这只发生在我使用sScrollX时。 - http://jsfiddle.net/4n3Hp/ - 不幸的是,这个特定用例需要它。

由于tabletools对我不起作用,由于它使用flash和我的情况的一些次优行为,我正在尝试编写excel导出。我已经提取了所有必要的单元格信息,但DataTables正在用标题做一些奇怪的事情。

假设一个listTable的div(这是通用的,但是作为一个例子)我试过了

$('#listTable').dataTable().fnSettings().nTable.getElementsByTagName('thead')

它获取了表头标题行,除了它已被更改。

<th class=​"sorting" role=​"columnheader" tabindex=​"0" 
aria-controls=​"listTable" rowspan=​"1" colspan=​"1" 
style=​"width:​ 130px;​ padding-top:​ 0px;​ padding-bottom:​ 0px;​ 
border-top-width:​ 0px;​ border-bottom-width:​ 0px;​ height:​ 0px;​" 
aria-label=​"Email Recipients:​ activate to sort column ascending">​</th>​

除了原始标题文本已被删除外,哪个会没问题,这是我需要的。

查看DOM,它显示有两个实际的表,其中一个具有单元格数据,另一个用“datatables_scrollHeadInner”分类的div封装。 (如果我在页面上有多个表,那么在提供通用解决方案时会出现问题。)

虽然我认为我有一个hackaround解决方案(从aria-label拉出并用冒号分隔,从不在标题中使用冒号;或者做一些尴尬的jquery导航),我想知道我怎么能更多优雅地从dataTable中提取标题。

1 个答案:

答案 0 :(得分:6)

尝试使用此标题行:

var nRow =  $('#myDataTable thead tr')[0];

列标题名称将在nRow.cells [index] .innerText。

请参阅此jsFiddle:http://jsfiddle.net/h3U7f/

编辑sScrollX
试试这个:

var columns = $('#myDataTable').dataTable().dataTableSettings[0].aoColumns;
$.each(columns, function(i,v) { alert(v.sTitle); });

请参阅: http://jsfiddle.net/UCYCt/

BQB