jQuery在隐藏父级中显示子级,错误地设置显示属性

时间:2012-12-20 05:29:30

标签: jquery css dom show-hide

请参阅以下jsfiddle进行演示:

http://jsfiddle.net/Drb8s/

当您在隐藏父级内的元素上使用jQuery show()时,似乎会出现此问题。 (然后显示父母)。如果子元素最初是display:table,当你调用show()时,它会将它切换回display:block,这是不正确的。

我只能使用小提琴中的控制台来复制它,但是在我的应用程序中,我通过代码遇到了这个问题。

HTML:

<div class="outer">
    <div class="inner">Inner</div>
</div>

CSS:

.outer {
    display: none;
}
.inner {
    display: table;
}​

JS:

$('.inner').hide();
// $('.inner').show();​​​  // this works in jsfiddle (but not in my app, or run through console)

编辑:作为解决方法,我正在使用.css('display', 'table'),但我只是想知道是否有人知道这个的实际原因。

1 个答案:

答案 0 :(得分:1)

.show.hide在他们展示/隐藏的方法中是残酷的;如果你想要特定的,非传统的风格,你不能使用它们:

$(".inner").data('oldstyle', $(".inner").css('display')).css('display', 'none');
...
$(".inner").css('display', $(".inner").data('oldstyle'));