В чем проблема?
Когда вы переключаете изображение путем установки или сброса «display: none» - в первый раз оно становится невидимым, но оставляет место выделенным - во второй разне становится видимым
Как воспроизвести проблему?
При использовании IE 7 (или менее) или IE 8 в режиме совместимости откройте HTML-код в GIST:- Нажмите кнопку переключения, изображение исчезнет, но свиток все еще думает, что изображение там есть - Нажмите кнопку переключения еще раз, изображение не появляется
Что я пытаюсь сделать?
Я работаю над проектом, который отображает большое количество пользовательских данных, а рядом с пользовательскими данными мы отображаем значки - содержимое страницы отображается динамически на основе вызовов AJAX.И есть некоторый код (который вызывается, когда вы отмечаете / снимаете галочку с некоторых параметров отображения), которые делают эти значки невидимыми / видимыми.Пользователи отображаются в большой сетке - поэтому таблицы были необходимы.В качестве повышения производительности я начал использовать таблицы стилей YUI для исчезновения / повторного появления большого количества значков одного типа.
Что я хочу знать?
Что является основной причиной этой проблемы с отображением в IE?
Что я НЕ хочу знать?
Я не хочу знать, как изменитьструктура DOM, чтобы исправить эту проблему.Я уже знаю, что удаление фиктивной таблицы вокруг DIV устраняет проблему.Также, если вы поместите html непосредственно в элемент content_pane, не генерируя его динамически, проблема тоже исчезнет.Да, и FF / Chrome тоже работают нормально (мне даже нужно было об этом упомянуть?)
Выпуск демонстрации
<html>
<head>
<title>Stylesheet Testing</title>
<script src="http://yui.yahooapis.com/3.3.0/build/yui/yui-min.js" charset="utf-8"></script>
<script type="text/javascript">
YUI().use("event", "stylesheet", function(Y){
var stylesheet = new Y.StyleSheet();
var toggletSet = true;
Y.on("click", function() {
if (toggletSet) {
stylesheet.set('.myclass', {display: 'none'});
} else {
stylesheet.unset('.myclass', 'display');
}
toggletSet = !toggletSet;
}, "#toggle");
var html = [
'<table><tr><td>',
'<div style="overflow: auto; width: 100px; height: 60px;">',
'<img class="myclass" src="http://l.yimg.com/a/i/brand/purplelogo/uh/us/ydn.gif">',
'</div>',
'</td></tr></table>'
];
Y.one('#content_panel').setContent(html.join(''));
Y.one('#toggle').set('disabled', false);
});
</script>
</head>
<body>
<div id="content_panel"></div>
<button id="toggle" disabled="disabled">toggle</button>
</body>
</html>