请参阅以下jsfiddle进行演示:
当您在隐藏父级内的元素上使用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')
,但我只是想知道是否有人知道这个的实际原因。
答案 0 :(得分:1)
.show
和.hide
在他们展示/隐藏的方法中是残酷的;如果你想要特定的,非传统的风格,你不能使用它们:
$(".inner").data('oldstyle', $(".inner").css('display')).css('display', 'none');
...
$(".inner").css('display', $(".inner").data('oldstyle'));