IE7 зависает на div теряется при прикосновении к дочернему элементу этого div - PullRequest
2 голосов
/ 18 сентября 2009

В теории

У меня есть div (контейнер), который при наведении на одного из его дочерних элементов div появляется (выпадающий). Раскрывающийся список содержит изображения ссылок и т. Д., А когда я покидаю его и контейнер, раскрывающийся список исчезает.

<div id="container">
  <div>Hover over me to see extra stuff</div>
  <div id="drop-down">
     <div>
       <img />
     </div>
     <div>
       <a />
       <p><span>Info</span><span>More</span></p>
     </div>
     <img />
  </div>
</div> 

Вот jQuery

$('#container').hover(
  function(){ $(this).find('#drop-down').addClass('hover'); },
  function(){ $(this).find('#drop-down').removeClass('hover'); }
);

Вот CSS для парения

#container #drop-down {left: -9999px;}
#container .hover {left: 0;}

На практике

В любом браузере, кроме IE7, он работает отлично, но когда я выделяю пролеты в первом, содержащем div в раскрывающемся меню, то выпадающий список почему-то исчезает, как если бы я покинул контейнер.

Вопрос

Я в течение почти 3 часов била головой о стену, пытаясь найти все ошибки ie7, которые могли найти, если они были актуальны, но, к сожалению, безуспешно. Первоначально я думал, что это может быть проблема с z-index, но, поскольку он фактически отображается над содержимым ниже, это не может иметь место (и я попробовал это, установив 'position: относительный; z-index: 9999;' как на р, так и на пролетах). Кроме этого я полностью в тупике. Однако я знаю, что любые элементы ниже этого div (например, тег image в приведенном выше примере) действительно создают проблему после обхода промежутков на отступе p.

Дополнительные разъяснения: Я обнаружил, что элементы должны лежать под пролетами, но поскольку они не просвечивают, я понятия не имею, как это исправить. Кроме того, не имеет значения, под каким элементом находится элемент, просто если под ним есть элемент div, в который вы можете «войти» (т. Е. Вы еще не в нем), тогда вы потеряете указатель мыши и выпадающий список исчезнет.

Я знаю, что не включил CSS, но кто-нибудь может придумать причину, по которой это может происходить? Кроме того, я отключил все CSS, работающие непосредственно с ним, и это все еще затрагивается, но эта проблема.

Ответы [ 3 ]

6 голосов
/ 18 сентября 2009

Как сказано в комментариях

Поместив цвет фона на диапазон, вы наведите курсор мыши. По какой-то причине, когда вы наводите курсор мыши на прозрачный фон в IE, он считает, что мышь больше не находится в объекте dom (или в данном случае в span), а вместо этого находится в элементе под ним и вызывает событие mouse out.

Microsoft считает это ошибкой и ссылается на эту запись в блоге оттуда msdn запись

2 голосов
/ 09 февраля 2011

Нашли, что вызывает исчезновение элементов в старой версии IE. Скопируйте и добавьте это к вашему CSS

div { display: inline-block; }

div { display: block; }

Это хорошо объясняет ошибку.

1 голос
/ 20 декабря 2011
div { display: inline-block; }  div { display: block; } 

Это сработало для меня ... вау, какая боль.

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