Javascript 在克隆表中查找可见行?

Javascript 在克隆表中查找可见行?,javascript,jquery,html,Javascript,Jquery,Html,如何在克隆表中找到可见行 var divContents = $("#mytable").clone(); divContents.find('tr:visible'); // <-- not working 我需要使用克隆的元素,因为我得到了它的一个副本,对它进行修改,然后将其发送打印。jQuery的:visible选择器选择消耗文档空间的元素。 可见元素的宽度或高度大于零 您的元素甚至不在文档中,因为它们是仅存在于内存中的克隆集,所以根据定义它们不是可见的 如果您真正想要的是选择不是

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

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

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

jQuery的
: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

只有当元素是DOM的一部分时,才能检测到可见元素。因此,您可以附加表(如有必要,请远离屏幕),处理可见行,然后删除它(如有必要,请再次删除)。大概是这样的:

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

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

$divContents.remove();

这似乎是正确的,tho elem是一个索引,但我通过使用.style.display…,修复了它。。。。但在过滤器通过后,行仍然存在。修复了参数,但不确定元素仍然存在是什么意思
filter
筛选集合,如果要存储新集合,必须使用变量,如
var visible=divContents.find('tr').filter(函数(索引,元素){…
我更喜欢另一个答案,但我最终还是用了这个。谢谢。
左:'-10000px'
随着显示分辨率的不断提高,可能会有点窄。而应该选择
左:'-10000m'
:)这至少在未来两年内是可以证明的;)
var $divContents = $("#mytable").clone().css({
    position: 'absolute',
    left: '-10000px'
}).appendTo('body');

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

$divContents.remove();