这是两个测试文件:
这两个页面上的标记几乎相同。有一张有两列的 table 。一列(第二列)的<th>
和<td>
元素都被赋予了“垃圾”类。
在“好”页面中,加载该页面时,您会在顶部看到一个未选中的复选框。如果选中此复选框,第二列应消失。如果您取消选中它,第二列将返回。在“错误”页面中,复选框开始处于选中状态。取消选中它不会对IE7产生任何影响,尽管它可以在其他不受根本危害的浏览器中使用。
该复选框与一个小的Javascript例程 Hook ,该例程仅从<table>
标记中添加或删除类“compact”。有一个样式表包含以下内容:
table.compact th.junk, table.compact td.junk {
display: none;
}
因此,应该发生的是“好”页面上发生的。但是,似乎在IE7中(也可能是6),如果表元素开始时是这样的:无论最初对DOM进行的更改是否会带来新的样式规则,表元素在最初呈现时都被设置为不可见,它们将永远不会被看到。生效并使它们可见。 (尤其是<table>
部分似乎是一个问题;我在其他元素上使用了相同的机制,它们都可以正常工作。)因此,问题是:是否有人知道可以用来绕开这种愚蠢行为的某些骇客(无论多么令人反感)?显然,我可以尝试安排IE7使用相关的切换控件集开始其 View ,以使表单元格可见,但是在我的情况下,这发生在作为AJAX响应生成的表周围,因此这会很大我宁愿避免困惑。 (该表也实际上是一个表;它是表格信息的显示,而不是布局hack。)
我已经四处搜寻,却没有找到任何东西,如果您考虑从“IE7布局错误”搜索中获得多少匹配,这也就不足为奇了。
最佳答案
我没有安装IE 7,但是与IE 6相同。这是我为解决此问题而做的事情:
$(function() {
$('#click').click(function() {
$(".compact th+th,.compact td+td").toggleClass('junk',this.checked);
});
});
问题出在您的选择器上。切换
compact
不会增加junk
的可见性。关于javascript - CSS使其不可见的IE7表格单元格不能通过以后的类更改(??)使其可见。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3077250/