Ячейки таблицы IE7, сделанные невидимыми CSS, не могут быть сделаны видимыми более поздними изменениями класса (??)

Вот два тестовых файла:

http://gutfullofbeer.net/good-table.html

http://gutfullofbeer.net/bad-table.html

Разметка на тех двух страницах - все почти то же. Существует таблица с двумя столбцами. и элементам одного столбца (второй) все дают класс "спам".

На "хорошей" странице при загрузке его, Вы будете видеть флажок, неконтролируемый наверху. При проверке флажка второй столбец должен исчезнуть. При снятии выделения с ним второй столбец возвращается. На "плохой" странице флажок начинается проверенный. Снятие выделения с ним не имеет никакого эффекта в IE7, хотя это работает в других браузерах, которые не находятся в собственности фундаментальным злом.

Флажок сцепляется с небольшой стандартной программой JavaScript, которая просто добавляет или удаляет класс "компактный" из

тег. Существует таблица стилей, которая включает это:

table.compact th.junk, table.compact td.junk {
  display: none;
}

Таким образом то, что должно произойти, - то, что происходит на "хорошей" странице. Однако кажется, что в IE7 (возможно, 6 также), если элементы таблицы начинаются таким образом, что, когда первоначально представлено они разрабатываются, чтобы быть невидимыми, они никогда не будут замечаться, независимо от последующих изменений DOM, который принес бы модернизированные правила в эффект и оставил бы их видимыми. (Это появляется быть проблемой с

части в особенности; я использую тот же механизм в другом месте с другими элементами, и они все хорошо работают.)

Так, вопрос: кто-либо знает о некотором взломе — однако восстающий — который может использоваться для обхождения этого идиотичного поведения? Очевидно, я мог попытаться принять меры, чтобы IE7 запустил свои представления с соответствующего набора управления переключателем так, чтобы ячейки таблицы были видимы, но в моем случае это происходит вокруг таблицы, это производится как ответ Ajax, и таким образом, это была бы большая путаница, я скорее избегу. (Таблица является действительно таблицей, также; это - дисплей табличной информации, не взлом расположения.)

Я погуглил вокруг и не нашел что-либо, которое не должно быть удивительным, если Вы рассматриваете, сколько хитов Вы добираетесь от "поисков" ошибки расположения IE7.

5
задан Pointy 19 June 2010 в 21:11
поделиться

2 ответа

Это ошибка рендеринга. IE6 / 7 не использует правильную модель отображения таблицы. К сожалению, я не могу вспомнить конкретное имя / ярлык для этой конкретной ошибки, и я не могу найти авторские ресурсы, подтверждающие это.

По крайней мере, я нашел 2 способа исправить это с помощью CSS.

  1. Самый простой - используйте visibility: hidden; вместо display: none; . К сожалению, это не очень хорошо работает, если у вас есть больше столбцов после столбца, который нужно переключить, или если у вас есть граница таблицы. Это все еще оставляет место. Добавление position: absolute; в .junk устраняет эту проблему в FF, но вы возвращаетесь к той же проблеме рендеринга в IE.

  2. Взлом, который злоупотребляет ошибочной способностью IE применять стили для

.

 

 
 
 <сценарий>
 $ (function () {
 $ ('# click'). click (function () {
 $ ('таблица'). toggleClass ('компактный', this.checked);
 });
 });
 
 <стиль>
table.compact .junk {display: none; }
 
 
 <стиль>
table.compact .junk {дисплей: блок; }
table.compact col.мусор {дисплей: нет; }
 
 
 
 
 
 
Привет Мир
Фу Бар
Фу Бар

В качестве альтернативы, вы также можете просто переключать элементы фактического интереса в jQuery:

$(function() {
    $('#click').click(function() {
        $('table.compact .junk').toggle(!this.checked);
    });
});
2
ответ дан 15 December 2019 в 00:50
поделиться

У меня не установлен IE 7, но это была та же проблема с IE 6. Вот что я сделал, чтобы исправить это:

$(function() {
  $('#click').click(function() {
    $(".compact th+th,.compact td+td").toggleClass('junk',this.checked);
  });
});

Проблема была в селекторе. Переключение на compact не добавляло видимость к junk.

2
ответ дан 15 December 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: