Div неправильно скрывается в IE - PullRequest
0 голосов
/ 04 мая 2009

На моем веб-сайте есть несколько div-ов - при загрузке я хочу, чтобы некоторые из них были скрыты, некоторые показаны. Я прячу те, которые мне не нужны, вот так:

$(".divToHide").hide();

Это хорошо работает в Chrome, Firefox, IE8 и Opera ... Это не работает в IE6 (я еще не тестировал предыдущую версию ...) - когда я загружаю страницу, все элементы div правильно скрыты. Когда я нажимаю на ссылку, которая делает одну из них видимой, она отображается правильно. Проблемы появляются, когда я нажимаю на другую ссылку, которая должна скрыть первый div и показать другую. Текст первого div скрыт, но изображение остается и препятствует новому показу div. Я уверен, что это ошибка - когда я увеличиваю или уменьшаю масштаб страницы, элементы div, которые должны были быть скрыты, внезапно исчезают - они видны только при загрузке страницы.

Есть ли способ обойти это?

РЕДАКТИРОВАТЬ: Я использую jQuery v1.3.2

РЕДАКТИРОВАТЬ: К сожалению, решение использовать addClass для добавления класса CSS, который заявляет display: none, на самом деле не работает - казалось, что это было поначалу, но проблема все еще существует.

ОБНОВЛЕНИЕ: Файл js, который я написал, можно найти здесь , а html здесь . У меня проблема в том, что когда вы переходите из одного портфеля в другое, изображение первого остается там, препятствуя следующему, даже если оно должно быть скрыто (текст под ним изменяется правильно). Неправильное исчезает при попытке увеличить / уменьшить масштаб страницы.
Раньше я скрывал все портфели, используя $("#divId").hide(), но, как было указано ниже, теперь я использую $(".classToHide").hide().

ОБНОВЛЕНИЕ: Проблема решена в IE8 - я забыл включить объявление режима стандартов ... Однако в IE6 это все еще проблема.

Ответы [ 5 ]

3 голосов
/ 04 мая 2009

Вы скрываете несколько делений с помощью селектора идентификаторов?

Попробуйте дать классу div "divToHide", а затем используйте:

$(".divToHide").hide();

Возможно, IE8 обрабатывает дубликаты идентификаторов иначе, чем в других браузерах.

2 голосов
/ 04 мая 2009

Редактировать: упрощено использование toggleClass ()

Вы можете попробовать сделать это вручную, например, переключить класс css под названием «скрытый». Это может выглядеть примерно так:

function myToggle(element_id)
{
    mydiv = $('#' + element_id);
    mydiv.toggleClass("hidden");;
}

И ваш файл CSS будет иметь:

.hidden
{
    display:none;
}

Я не проверял это, но это тот обходной путь, который, я думаю, вы захотите подумать, если это действительно ошибка в jQuery / IE8.

2 голосов
/ 04 мая 2009

Просто мысль: вы не используете старую (до IE8) версию jQuery, не так ли?

Редактировать: Нет, grycz использует текущую версию.

0 голосов
/ 04 мая 2009

попробуй

$ ( "# divToHide") CSS. ( 'Дисплей: нет');

0 голосов
/ 04 мая 2009

Вы уверены, что вызов функции hide () даже вызывается при загрузке страницы? Попробуйте поставить alert('hi') прямо перед вызовом этой функции и посмотрите, происходит ли это в IE8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...