嗯,亚当的答案是你所需要的(正如你已经回答过的那样),但这是一种(有点困难的)方法。由于我工作了一段时间,我会继续发布它。 :)
http://jsfiddle.net/bXBhZ/4/
基本上,我只是遍历表格行,然后使用子选择器 :eg() 来获取第 1 列和第 2 列。
请注意,我这样做两次的唯一原因是确保它正常工作(确实如此,从显示下拉菜单中查看 select 25 并转到第 2 页)。
你想看到的是:
$('#queryTable tbody tr').each(function(){
var date = $(this).children('td:eq(0)').text();
var obj = $(this).children('td:eq(1)').text();
...
});
基本上,我所做的是通过将所有行复制到 JSON 数组中来复制表(两次...),然后制作另一个 DataTable。我使用一个pre标签来保存数组文本,并使用jQuery.parseJSON()来使用。
所以,如果出于某种原因你想这样做,这里有一个例子。
HTML
<table class="display" id="queryTable"></table>
<table class="display" id="queryTable2"></table>
<br style="clear: both;"/>
<pre id="json"></pre>
Javascript
var jsondata = {"sEcho": 26,
"iTotalRecords": 26,
"iTotalDisplayRecords": 10,
"aaData": [[ "20090301","60"],
[ "20090302","253"],
[ "20090303","108"],
[ "20090304","166"],
[ "20090327","209"],
[ "20090328","452"],
[ "20090329","450"],
[ "20090330","143"]
],
"aoColumns": [{"sTitle": "The observed Date"},
{"sTitle": "number of objects"}
]
};
$('#queryTable').dataTable(jsondata);
var numrows = 1;
$('#queryTable tbody tr').each(function(){
var date = $(this).children('td:eq(0)').text();
var obj = $(this).children('td:eq(1)').text();
var row = "[\""+date+"\",\""+obj+"\"],\n";
row = numrows == 1 ? "["+row : row;
$('#json').append(row);
numrows++;
});
numrows = 1;
$('#queryTable tbody tr').each(function(){
var date = $(this).children('td:eq(0)').text();
var obj = $(this).children('td:eq(1)').text();
var comma = $('#queryTable tbody tr').length != numrows ? "," : "]";
var row = "[\""+date+"\",\""+obj+"\"]"+comma+"\n";
//row = numrows == 1 ? "["+row : row;
$('#json').append(row);
numrows++;
});
var jsondata2 = jsondata;
jsondata2.aaData = jQuery.parseJSON($('#json').text());
$('#queryTable2').dataTable(jsondata2);