JS:隐藏除一个之外的所有元素(按 id)(及其所有降序子元素及其父元素)

海姆斯

我尝试选择页面上除 #content_container 及其所有后代子元素及其所有父元素之外的所有元素。后来我想隐藏所有选定的元素。

但是我已经失败了:

var elems = document.querySelectorAll("body *:not(#content_container *)");

浏览器控制台 (chrome) 返回:无法在“文档”上执行“querySelectorAll”:“body *:not(#content_container *)”不是有效的选择器。

"body *:not(#content_container)"不会返回错误。

如何做到这一点?注意:不能使用 jQuery。

编辑:你们中的一些人想要一个例子。目标是让#content_container 及其内容在网站上可见,而所有其他内容将被隐藏。

<body>
<div class="hide">
    <div class="hide">

    </div>
</div>
<div>
    <div>
        <div class="hide">
            <div class="hide">

            </div>
        </div>
        <div id="content_container">
            <p>  ------- content_container div ------- </p>
            <div>
                    <div>
                            <div>

                            </div>
                    </div>
            </div>
            <div>

            </div>    
        </div>
    </div>
    <div class="hide">

    </div>
</div>
<div class="hide">
    <div class="hide">
        <div class="hide">
            <div class="hide">

            </div>
        </div>
    </div>
</div>
<div class="hide">
    <div class="hide">

    </div>
</div>

罗布

我能看到的唯一方法是获取主题节点,然后将它的所有兄弟节点添加到“不显示”集合中,然后向上其父节点收集并添加所有兄弟节点,并在正文处停止.

下面只添加兄弟姐妹和父兄弟姐妹,而不是节点本身或其直接祖先,一旦处理完 body 子节点就停止。它也只收集元素节点并忽略所有其他节点,因此空的 #text 节点兄弟节点仍然存在,但不应影响布局。如果你想摆脱它们,只需删除它们。

单击“隐藏内容”按钮。

function hideStuff(){
  var el = document.querySelector('#content_container');
  var node, nodes = [];
  
  do {
    var parent = el.parentNode;
    
    // Collect element children
    for (var i=0, iLen=parent.childNodes.length; i<iLen; i++) {
      node = parent.childNodes[i];

      // Collect only sibling nodes that are elements and not the current element
      if (node.nodeType == 1 && node != el) {
        nodes.push(node);
      }
    }

    // Go up to parent
    el = parent;

  // Stop when processed the body's child nodes
  } while (el.tagName.toLowerCase() != 'body');

  // Hide the collected nodes
  nodes.forEach(function(node){
    node.style.display = 'none';
  });
}
<body>
  <div class="hide">hide
    <div class="hide">hide
      
    </div>
  </div>
  <div>
    <div>
      <div class="hide">hide
        <div class="hide">hide
          
        </div>
      </div>
      <div id="content_container">
        <p>  ------- content_container div ------- </p>
        <button onclick="hideStuff()">Hide stuff</button>
        <div>don't hide
          <div>don't hide
            <div>don't hide
              
            </div>
          </div>
        </div>
        <div>don't hide
          
        </div>
      </div>
    </div>
    <div class="hide">hide
      
    </div>
  </div>
  <div class="hide">hide
    <div class="hide">hide
      <div class="hide">hide
        <div class="hide">hide
          
        </div>
      </div>
    </div>
  </div>
  <div class="hide">hide
    <div class="hide">hide
      
    </div>
  </div>
</body>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我怎样才能得到一个div及其所有子元素及其各自的computeStyles?

来自分类Dev

选择除一个及其子代/孙代之外的所有元素

来自分类Dev

选择除一个及其子代/孙代之外的所有元素

来自分类Dev

删除元素及其所有子元素的内联CSS的最快方法?

来自分类Dev

xpath通过包含值的父属性排除元素及其所有子元素

来自分类Dev

如何查找div中的所有链接(及其所有子元素)

来自分类Dev

使用jQuery附加整个div及其所有元素

来自分类Dev

如何从列表中删除一个元素及其所有重复项?

来自分类Dev

获取除最后一个元素之外的所有元素 - JS

来自分类Dev

遍历选定元素及其子元素的所有类和ID

来自分类Dev

循环隐藏除一个之外的所有 div

来自分类Dev

如何使用jQuery隐藏除最后一个元素以外的所有元素(按类)

来自分类Dev

如何使用jQuery隐藏除最后一个元素以外的所有元素(按类)

来自分类Dev

设置除一个元素之外的所有元素的样式以使背景变暗

来自分类Dev

循环遍历除最后一个元素之外的所有元素

来自分类Dev

设置除一个元素之外的所有元素的样式以使背景变暗

来自分类Dev

c ++ 98,向量,删除除第一个元素之外的所有元素

来自分类Dev

对除一个元素之外的所有元素应用过滤器

来自分类Dev

如何通过密钥获取字典及其所有元素?

来自分类Dev

我如何隐藏除div及其所有子代之外的所有内容?

来自分类Dev

如何隐藏除id = mainContainer之外的所有元素

来自分类Dev

CSS Print隐藏除一个元素外的所有元素

来自分类Dev

HTML CSS隐藏除最后一个元素以外的所有元素

来自分类Dev

在jQuery中隐藏某个类的除一个元素以外的所有元素

来自分类Dev

通过JavaScript隐藏DataList的除第一个元素外的所有元素

来自分类Dev

所有max元素及其数组位置

来自分类Dev

使用jQuery,删除除最后一个之外的所有表元素

来自分类Dev

给定一个整数数组,output[i] = 除自身之外的所有元素的乘积

来自分类Dev

std::tuple 获取除最后一个元素之外的所有内容

Related 相关文章

  1. 1

    我怎样才能得到一个div及其所有子元素及其各自的computeStyles?

  2. 2

    选择除一个及其子代/孙代之外的所有元素

  3. 3

    选择除一个及其子代/孙代之外的所有元素

  4. 4

    删除元素及其所有子元素的内联CSS的最快方法?

  5. 5

    xpath通过包含值的父属性排除元素及其所有子元素

  6. 6

    如何查找div中的所有链接(及其所有子元素)

  7. 7

    使用jQuery附加整个div及其所有元素

  8. 8

    如何从列表中删除一个元素及其所有重复项?

  9. 9

    获取除最后一个元素之外的所有元素 - JS

  10. 10

    遍历选定元素及其子元素的所有类和ID

  11. 11

    循环隐藏除一个之外的所有 div

  12. 12

    如何使用jQuery隐藏除最后一个元素以外的所有元素(按类)

  13. 13

    如何使用jQuery隐藏除最后一个元素以外的所有元素(按类)

  14. 14

    设置除一个元素之外的所有元素的样式以使背景变暗

  15. 15

    循环遍历除最后一个元素之外的所有元素

  16. 16

    设置除一个元素之外的所有元素的样式以使背景变暗

  17. 17

    c ++ 98,向量,删除除第一个元素之外的所有元素

  18. 18

    对除一个元素之外的所有元素应用过滤器

  19. 19

    如何通过密钥获取字典及其所有元素?

  20. 20

    我如何隐藏除div及其所有子代之外的所有内容?

  21. 21

    如何隐藏除id = mainContainer之外的所有元素

  22. 22

    CSS Print隐藏除一个元素外的所有元素

  23. 23

    HTML CSS隐藏除最后一个元素以外的所有元素

  24. 24

    在jQuery中隐藏某个类的除一个元素以外的所有元素

  25. 25

    通过JavaScript隐藏DataList的除第一个元素外的所有元素

  26. 26

    所有max元素及其数组位置

  27. 27

    使用jQuery,删除除最后一个之外的所有表元素

  28. 28

    给定一个整数数组,output[i] = 除自身之外的所有元素的乘积

  29. 29

    std::tuple 获取除最后一个元素之外的所有内容

热门标签

归档