如何在dom中隐藏除元素之外的所有元素(孙子)

时间:2015-09-08 10:23:41

标签: javascript jquery html

我有一个容器用于我的所有元素,我隐藏了所有的孩子:

$("#svgContainer").children().hide();

我有两个元素是'SVGContainer'的孙子:

#canvasParent& #canvasChild

我试过这样做:

$("#svgContainer").children().hide();
        $("#canvasParent").show();
        $("#canvasChild").show();

这似乎不起作用,可能是因为display:none;被赋予父母而不是孩子。

除了id为#canvasParent&的元素外,我如何隐藏每个SVGContainers子元素? #canvasChild

这是我所拥有的布局的小提琴:http://jsfiddle.net/o9zowx3b/1/

注意它仍隐藏所有元素,我认为这是因为他们是孙子孙女而不是svgContainer的孩子

4 个答案:

答案 0 :(得分:2)

您想要做的是隐藏特定元素的所有兄弟姐妹。 jQuery使用 .siblings方法相对简单:

$("#svgContainer").children().hide();​​​​

这将隐藏同一级别中同一父元素中的所有元素。

答案 1 :(得分:2)

这应该按要求工作。

$('#svgContainer').children().not('#canvasParent').not('#canvasChild').hide();

Here is a fiddle, specially for you!

祝你好运。

答案 2 :(得分:1)

这将选择除2个孩子以外的所有孩子。

$("#svgContainer").children().not("#canvasParent,#canvasChild").hide();

答案 3 :(得分:1)

您也可以使用单选择器执行此操作:



$("#svgContainer > :not(#canvasParent,#canvasChild)").hide();

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="svgContainer">
    <div id="canvasParent">canvasParent</div>
    <div>should be hidden</div>
    <div id="canvasChild">canvasChild</div>
</div>
&#13;
&#13;
&#13;