编辑:这只发生在我使用sScrollX时.- http://jsfiddle.net/4n3Hp/ - 不幸的是,这个特殊用例需要它.
由于tabletools对我不起作用,由于它使用了flash和我的情况的一些次优行为,我正在尝试编写一个excel导出.我已经提取了所有必要的单元格信息,但DataTables正在用标题做一些奇怪的事情.
假设一个listTable的div(它是通用的,但是作为一个例子)我试过了
$('#listTable').dataTable().fnSettings().nTable.getElementsByTagName('thead')
Run Code Online (Sandbox Code Playgroud)
它得到了表头行,除了它已被更改.
<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>?
Run Code Online (Sandbox Code Playgroud)
哪个会好的,除了原始的标题文本已被删除,我需要的确切的事情.
查看DOM,它显示有两个实际的表,其中一个具有单元格数据,另一个用"datatables_scrollHeadInner"分类的div封装.(如果我在页面上有多个表,那么在提供通用解决方案时会出现问题.)
虽然我认为我有一个hackaround解决方案(从aria-label拉出并用冒号分隔,从不在标题中使用冒号;或者做一些尴尬的jquery导航),我想知道如何更优雅地提取来自dataTable的标头.
试试这个来获得标题行:
var nRow = $('#myDataTable thead tr')[0];
Run Code Online (Sandbox Code Playgroud)
列标题名称将位于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); });
Run Code Online (Sandbox Code Playgroud)
请参阅:http: //jsfiddle.net/UCYCt/
BQB