父隐藏,但孩子仍然可见(我不希望他们可见)!

exo*_*boy 27 javascript jquery

好的,我有一种情况需要将一些克隆的DOM元素添加到网页中的父DIV元素.

我有四个父母DIV持有人.当我将其可见性从可见切换到隐藏时,会发生一些非常奇怪的事情:所有后期页面加载的子项都保持可见!

这是下载源代码的链接:http: //www.clarencebowman.com/parent-child-visibility/parent-child-visibility.zip

以下是第一手查看现象的链接:http: //www.clarencebowman.com/parent-child-visibility

您将看到的是一个红色框,其中添加了一些洋红色子元素,页面加载后.页面底部有一个显示/隐藏按钮.

我在父DIV中添加了一个绿色条纹,以显示其子元素确实正确地继承了它的可见性.

但是在添加克隆的子元素然后隐藏父DIV之后,克隆的子元素的NONE将消失!

在运行复制脚本之前,我已经尝试将要克隆的子项放在父DIV中...它没有任何区别.

在页面加载后添加的任何子元素似乎都以某种方式丢失了与父DIV元素(红色框)的继承链接.....

还有其他人经历过吗?是否有一种简单的方法来修复/替换/重新分配孩子的继承?

我正在使用jQuery 1.5.

Jar*_*ish 29

您没有display: none在父级上使用(这会影响子级),您在visibility: none父级上使用,并且子级内部具有visibility: visiblecss属性.如果您希望子项隐藏,请将它们设置为visible: hidden也可以display: none在父元素上使用.

因此,当凯尔指出的那样,你可以使用$('#parent_div').toggle();,这将很容易地应用display: none#parent_div.

我只是添加它visibility并且display不一样.例如,如果一个元素是width: 10px,height: 10px,visibility保留元件的三维空间(它仍然占用width: 10px,height: 10px),而display: none完全消除元件的从父元素(尺寸width: 0,height: 0).Visibility意味着它仍然在视觉上表现出与其他受影响元素相关的流动,它只是没有看到; display意味着它在屏幕上看不到也没有与其他显示/可见元素相关联.

  • 使用`$('#parent_div')切换父元素.toggle();`.它会隐藏孩子们. (2认同)

Fra*_*del 29

许多其他人已提到使用,display: none但正如您所知,这与使用该visibility属性有完全不同的行为.

你可以做的一件事是使用hidden/ inherit而不是hidden/ visible.inherit默认情况下会导致元素可见,除非其中一个元素不是.这是你想要的.

  • `继承`就是答案! (7认同)
  • 使用`display:none`的公认答案可能适用于某些特定情况(元素布局/流程无关紧要),但这个答案是更好的通用解决方案. (3认同)
  • 这应该是最好的答案! (3认同)