在克隆表中查找可见行?

时间:2015-06-30 16:25:58

标签: javascript jquery html

如何在克隆表中找到可见行?

var divContents = $("#mytable").clone();
divContents.find('tr:visible'); // <-- not working

不要告诉我这样做:

var divContents = $("#mytable tr:visible").clone();

我需要使用克隆元素,因为我得到了它的副本,更改它然后将其发送到打印。

2 个答案:

答案 0 :(得分:1)

jQuery的:visible选择器选择消耗文档空间的元素 可见元素的宽度或高度大于零。

您的元素甚至不在文档中,因为它们是仅存在于内存中的克隆集,因此根据定义它们不是:visible,而不是它们。

如果你真正想要的是选择不是display:none或类似的元素,你可以根据它进行过滤

var divContents = $("#mytable").clone();

var visible = divContents.find('tr').filter(function(index, elem) {
    return elem.style.display !== 'none' ||
           elem.style.visibility !== 'hidden';
});

visible.css('color', 'red'); // target only visible rows

答案 1 :(得分:1)

只有在元素是DOM的一部分时才能检测到可见元素。因此,您可以附加表格(如果需要,可以关闭屏幕),使用可见行,然后将其删除(如果需要,再次删除)。像这样:

var $divContents = $("#mytable").clone().css({
    position: 'absolute',
    left: '-10000px'
}).appendTo('body');

var $visibleRows = $divContents.find('tr:visible');
// do something with $visibleRows...

$divContents.remove();