3

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から削除されることを認識しているため、残りの行にアクセスできないのはそのためです。

最初のページを超えて残りの行データにアクセスするにはどうすればよいですか?

4

2 に答える 2

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);
}
于 2013-07-31T08:03:55.197 に答える
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();
}
于 2013-07-29T17:41:01.417 に答える