0

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

由于 tabletools 对我不起作用,由于它使用闪存和一些不适合我的情况的行为,我正在尝试编写一个 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">​&lt;/th>​

这很好,除了原始标题文本已被删除,正是我需要的东西。

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

虽然我认为我有一个 hackaround 解决方案(从 aria-label 中提取并用冒号分隔,并且从不在标题中使用冒号;或者做一些尴尬的 jquery 导航),但我想知道如何更优雅地提取数据表中的标头。

4

1 回答 1

7

试试这个来获取标题行:

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/

于 2013-04-21T17:56:58.323 回答