使用:jQuery 1.7.1
我在IE8中看到一个问题,我有一个容器div,当使用hide()和show()隐藏/显示子元素(UL)时,它无法正确计算其高度。
这个容器div是一个包装模块内容的模块体。每次模块中的某些东西需要调整模块的高度/宽度时,我们的模块需要有一个刷新方法,这是因为它们需要一个固定的高度来正确渲染它。它通过抓住容器div的高度来实现这一点,但是当我在IE中展开或折叠内部部分时,容器div不会重新计算其高度。
我发现是否用.addClass(" display-none")/ .removeClass(" display-none")替换所有hide()show()(其中) .display-none {display:none;})它解决了这个问题。但是,我希望有一个css解决方案,我仍然可以使用show和hide,一些规则或IE问题/ hack我不知道。
我想问的问题是为什么?
以下是一些更多细节,
<ul>
s。如果代码示例或html示例有帮助我也可以提供,但我真的想看看是否有人碰巧对我遇到的问题有更一般的概念。
以下是容器的样式
.module > div > div > * {
word-spacing: normal;
}
.module-content-data {
max-width: 962px;
padding: 10px 10px 0;
}
* {
margin: 0;
}
.module {
word-spacing: -1em;
}
Inherited fromdiv.main
.main {
word-spacing: -1em;
}
Inherited frombody
body {
color: #333333;
font-family: Arial,Calibri,Verdana,Helvetica,Sans-Serif;
font-size: 11px;
}
答案 0 :(得分:0)
我最终找到了一个解决方案仍然没有找到原因。显然在IE8 $ .hide()和$ .show中,在某些情况下没有正确设置计算高度。但是,我修改了我的方法来改为使用addClass(“display-none”)调用,并且正确计算了高度。我希望这可以帮助其他任何有类似问题的人。
更新: 在具有相同问题的另一页上,上面列出的“修复”无效。所以我还是不知道。如果我发现更多信息,将会更新。