如何从整个文档中删除不可见元素?

时间:2015-05-08 22:14:28

标签: javascript jquery dom

我想使用Javascript和JQuery制作网页的整个html副本,并删除用户看不到的所有元素。这是我到目前为止所尝试的:

$('html').not(':visible').remove()

然而,它似乎不起作用。有谁知道我怎么能做到这一点?

3 个答案:

答案 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();