如何在克隆表中找到可见行?
var divContents = $("#mytable").clone();
divContents.find('tr:visible'); // <-- not working
请不要告诉我这样做:
var divContents = $("#mytable tr:visible").clone();
我需要使用克隆元素,因为我得到了它的副本,更改它然后将其发送到打印。
答案 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();