0

我想备份一个 html 表,然后使用 jquery 对其进行过滤:

$('.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 回答