0

後でjqueryを使用してフィルタリングするためにhtmlテーブルをバックアップしたい:

$('.row').closest('td').not(':contains(' + v + ')').parent('tr').remove();

remove()を行うので、前に行をバックアップする必要があります。

var allTable = $('#mytable').html();

そして、フィルターが実行されると、前のテーブル データに戻ります。

$('#mytable').html($(allTable));

しかし、これはうまくいきません。私が行った場合:

alert($(allTable).filter('tr').length);

最初の代入の次にゼロ行が返されます。

助けてください。

4

3 に答える 3

1

filter()要素の配列内の要素を検索するために使用されます。これはあなたが必要とするものではありません。find()別の子要素を見ています。また、HTML を jQuery オブジェクトに戻すためだけに保存​​するのは少し冗長です。jQuery オブジェクト自体を保存することもできます。これを試して:

var $table = $('#mytable');
$table.remove(); // use your existing logic here
alert($table.find('tr').length);
$table.appendTo('body'); // add the table back in to the DOM when conditions are met

フィドルの例

于 2012-11-06T12:36:41.663 に答える
0

ハイライト機能を使用すると、同様の問題が発生しました。テーブルを非表示のdivに複製し、変数からではなくそこから復元することで解決しました。動的テーブルでのjquery highlight()の破損を参照してください

于 2012-11-06T12:36:08.383 に答える
0

この問題は解決しましたか?

回避策を提案します。

複製されたテーブルを使用する代わりに、その (一時的な) コピーを作成し、それをアラートに使用します。

var alertTable = allTable;
alert($(alertTable).filter('tr').length);
于 2014-01-07T08:38:56.537 に答える