循环访问DataTables表以获取所有单元格内容

时间:2012-03-07 18:57:59

标签: jquery datatables

我正在使用jquery dataTables在我的网站上生成分页表。我需要运行一个从特定列中获取所有数据的进程。类似的东西:

$('.testLink').click(function(){
            var cells = new Array();
            $('#myTable tr td').each(function(){
                cells.push($(this).html());
            });
            console.log(cells);
        });

这个例子抓住了一切,但我只需要来自一列tds的信息。我想我可以通过在该行的所有tds中添加一个类来做到这一点,但我确信有更好的方法。这是一个奖金问题..

但我真正想知道的是如何使用数据表?因为脚本隐藏了表的大部分内容以放入分页,所以此函数仅抓取可见的单元格。我和fnGetData一起玩,但我没有得到它。有什么想法吗?

4 个答案:

答案 0 :(得分:47)

要访问所有行,您可以执行以下操作:

var rows = $("#myTable").dataTable().fnGetNodes();

在您的情况下,这应该有效:

   $('.testLink').click(function(){
        var cells = [];
        var rows = $("#myTable").dataTable().fnGetNodes();
        for(var i=0;i<rows.length;i++)
        {
            // Get HTML of 3rd column (for example)
            cells.push($(rows[i]).find("td:eq(2)").html()); 
        }
        console.log(cells);
    });

答案 1 :(得分:6)

这是使用fnGetData()

的方法

首先从插件中获取数据,这些数据将是所有行可见或不可见。遍历每个行数据数组,并将index = 1(第二个单元格)推入新数组

     oTable = $('#example').dataTable();

      var secondCellArray=[];
      $.each( oTable.fnGetData(), function(i, row){
          secondCellArray.push( row[1]);
    })

     console.log( secondCellArray)

编辑:工作演示......渲染后在控制台中查看

http://live.datatables.net/apixiv/edit#javascript,html

答案 2 :(得分:4)

jQuery.map结合fnGetData()构成了一个紧凑的解决方案。以下函数将返回包含obj_dtable的{​​{1}}列中所有值的一维数组:

n

答案 3 :(得分:1)

您需要使用“EQ”选择器。它从索引“0”开始,所以如果你有......

<tr>
  <td>0</td>
  <td>1</td>
  <td>2</td>
  <td>3</td>
</tr>

然后使用

 $("td").eq(3); // last one
 $("td").eq(2); //returns "2"

有意义吗?

http://api.jquery.com/eq-selector/