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 を見ると、2 つの実際のテーブルがあり、そのうちの 1 つはセル データを持ち、新しいテーブルは「datatables_scrollHeadInner」クラスの div でカプセル化されていることがわかります。(ページに複数のテーブルがある場合、一般的な解決策を提供するときに問題になります。)

ハックアラウンドの解決策があると思いますが(aria-labelからプルしてコロンで区切り、ヘッダーにコロンを使用しないか、厄介なjqueryナビゲーションを実行します)、よりエレガントに抽出する方法を知りたいですdataTable からのヘッダー。

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 に答える