我正在使用jquery dataTables在我的网站上生成分页表。我需要运行一个从特定列中获取所有数据的进程。类似的东西:
$('.testLink').click(function(){
var cells = new Array();
$('#myTable tr td').each(function(){
cells.push($(this).html());
});
console.log(cells);
});
这个例子抓住了一切,但我只需要来自一列tds的信息。我想我可以通过在该行的所有tds中添加一个类来做到这一点,但我确信有更好的方法。这是一个奖金问题..
但我真正想知道的是如何使用数据表?因为脚本隐藏了表的大部分内容以放入分页,所以此函数仅抓取可见的单元格。我和fnGetData
一起玩,但我没有得到它。有什么想法吗?
答案 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)
编辑:工作演示......渲染后在控制台中查看
答案 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"
有意义吗?