0

我有类似的东西:

<div id="id1">
    //some code 1

    <div id = "id2">
    //some code 2

    </div>
</div>

现在,我使用以下命令隐藏所有块:

$("#id1").hide();

但是,当我尝试显示内部块时,使用以下命令:

$("#id2").show();    

但这不起作用!

我应该怎么做才能解决这个问题?

4

5 回答 5

9

当父元素被隐藏时,它的所有子元素也被隐藏

如果您只想显示带有 ' id2' id 的元素,您可以这样做:

$('#id1').children(':not(#id2)').hide();  //Hiding all children except '#id2'  
$('#id1').show();
于 2012-12-24T14:50:33.343 回答
4

如果id1是隐藏的,不管是否id2可见。它不会显示,因为它的父级是隐藏的。这适用于所有后代元素。

于 2012-12-24T14:51:07.787 回答
1

不,这是不可能的display:none(这就是这样.hide()做的)。display:none隐藏元素,因此不会显示任何子元素。

display如果您能够从 using 切换到,这可能与您想要的一致visibility

#id1 {visibility: hidden;}
#id2 {visibility: visible;}

查看工作小提琴:http: //jsfiddle.net/vLYnk/2/

使用 javascript,您可以使用:

$("#id1").css('visibility', 'hidden');
$("#id2").css('visibility', 'visible');
于 2012-12-24T14:58:28.810 回答
0

创建一个元素并复制它然后显示它。

var element = jQuery('#id2').clone();
element.appendTo('some element');
于 2012-12-24T15:04:44.190 回答
-2

如果要显示它,则需要将内部 div 移出。类似的东西

$("#id2").parents(":visible").appendTo($("#id2"))
于 2012-12-24T14:52:24.287 回答