У Дэвида Дорварда, несомненно, был правильный ответ на эту конкретную проблему, но для полноты записи есть две (как минимум) другие IE <= 7 особых причин для отображения элемента, когда он скрыт в других браузерах: </p>
1) Один из них отлично описан здесь: http://www.positioniseverything.net/explorer/ienondisappearcontentbugPIE/index.htm Чтобы дать основную суть, это может произойти, если ваш элемент скрыт после загрузки страницы, в контейнере, который динамически скрыт, а затем показан. На этой странице есть больше информации, отличная демонстрация и некоторые исправления.
2) Еще один более редкий, но, вероятно, связанный сбой IE7: элемент «Display: Block» (установленный CSS) отображается, несмотря на то, что он находится внутри элемента «Display: None» (установленный javascript) «div», тогда как другие дочерние элементы без Установленное «Отображение» не отображается должным образом. Контейнером в этом случае был div «Position: fixed» (также установленный JS), а потомком - якорь («a»). Для меня единственное, что исправило это, это реструктуризация логики моего приложения так, чтобы Javascript применял «Display: None» в CSS до загрузки страницы, а не после. Это работало даже тогда, когда дисплей был переключен с JavaScript позже.
В общем, IE <= 7, похоже, имеет запутанные проблемы с наследованием отображения, когда содержимое скрыто после загрузки страницы. </p>
(не стесняйтесь редактировать)