jQuery:访问数据表的第二页和更多页的表行

时间:2013-07-29 16:12:56

标签: javascript jquery datatables

我正在从HTML表中检索这样的表行数据。

var descriptions = [];

var testRows = $('#tbl').find('tbody').find('tr');
$this = $(this);

testRows.each(function () {
    var description = $this.find('[id^="Desc"]').text();
    descriptions.push(description);
}

由于此表是一个页面限制为5个元素的数据表,因此我只能访问前5行中的数据。

我知道从DOM中删除了分页数据,这就是我无法访问其余行的原因。

如何超越首页并访问剩余的行数据?

2 个答案:

答案 0 :(得分:1)

我使用fnGetNodes API方法检索数据。

正确版本(2013年8月1日)

var descriptions = [];

var _testDesc;
var dt = $("tbl").dataTable();

var dtNodes = dt.fnGetNodes;
var dtNodeCount = dtNodes.length;

for (var i = 0; i < dtNodeCount; i++) {
    var description = $(dtNodes[i].cells[2].innerHTML).val();
    descriptions.push(description);
}

错误的版本(2013年7月31日)

var descriptions = [];

var _testDesc;
var dt = $("tbl").dataTable();

var dtElementCollection = dt.DataTable.settings[0].aoData;
var dtECLength = dtElementCollection.length;

for (var i = 0; i < dtECLength; i++) {
    var description = dtElementCollection[i]._aData[2];
    _testDesc = $(description).val();
    descriptions.push(_testDesc);
}

答案 1 :(得分:0)

如果您使用旧版本的jQuery,则可以使用.live()功能。对于较新版本,您应切换到.on()。但是你总是可以根据你所写的内容制作一个函数:

function example() {
    var testRows = $('#tbl').find('tbody').find('tr');
    $this = $(this);

    testRows.each(function () {
        var description = $this.find('[id^="Desc"]').text();
        descriptions.push(description);
    }
}

并在每次操作桌子时运行它:

function removeTr() {
    $('tr').remove();
    example();
}