我想使用Javascript和JQuery制作网页的整个html副本,并删除用户看不到的所有元素。这是我到目前为止所尝试的:
$('html').not(':visible').remove()
然而,它似乎不起作用。有谁知道我怎么能做到这一点?
答案 0 :(得分:2)
目前您只使用选择器定位<html>
元素。您需要遍历所有元素并检查它们的可见性,如下所示:
$('*').each(function(){
if($(this).not(':visible')){
$(this).remove();
}
});
更简洁的是,只需定位隐藏的元素并将其删除:
$('*:hidden').remove();
jQuery API参考声明如果元素占用文档中的空间,则认为元素是可见的。因此,高度和宽度大于0的元素被认为是可见的。这意味着如果您遇到上述代码中的问题,我们应该查看计算出来的CSS。
$('*').each(function(){
if($(this).css('visibility') == 'hidden' || $(this).css('display') == 'none'){
$(this).remove()
}
});
答案 1 :(得分:0)
您正在删除不可见的html元素。你应该删除它的孩子。
试试这个
$('html').children().not(':visible').remove()
编辑: 正如Barmar所说,这只会删除html的直接孩子。使用其他答案删除所有元素。
答案 2 :(得分:0)
这应该这样做:
$("body :hidden").remove();