【问题标题】:jQuery Datatables: How do I extract the row header titls?jQuery Datatables:如何提取行标题标题?
【发布时间】:2013-04-19 18:05:22
【问题描述】:

编辑:这只发生在我使用 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">​</th>​

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

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

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

【问题讨论】:

    标签: jquery datatables


    【解决方案1】:

    试试这个来获取标题行:

    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/

    【讨论】:

    • 这只发生在我使用 sScrollX 时。 -- jsfiddle.net/4n3Hp -- 不幸的是,这个特殊用例需要它。是的,通常您的解决方案有效,而且 sScrollX 似乎是罪魁祸首。不幸的是,在我的特殊情况下,我无法摆脱它。
    猜你喜欢
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多