Показать сообщение отдельно
  #7 (permalink)  
Старый 08.04.2012, 14:52
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

dmitriymar, никаких понтов, лишь способ привлечь внимание к теме, на которую никто не реагирует.
В старых найденных мною темах (сам понимаешь, их все пересмотреть нереально) решений, кроме как типа "используй mouseleave и mouseenter" я не нашёл, а уж если знаешь, в какой теме предлагалось нормальное решение подобного случая, можешь просто кинуть ссылку на неё, а не начинать самому колотить понты про чужие понты (ну да ладно, это лирика).

mouseleave и mouseenter я использовать не буду по причине их некроссбраузерности, но механизм их работы мне всё равно придётся сэмулировать, это понятно и это уже последующий вопрос, сейчас речь не об этом.

Тема про события мыши вроде бы неплохо раскрыта и в http://learn.javascript.ru/mouse-events, хотя применить предложенные там сведения у меня не получается, попробую на основе имеющейся там информации расписать, что происходит в приведённом примере:

1) Навели мышь на первый div - сработал обработчик onmouseover у этого div, в результате появился второй div (здесь всё понятно).

2) Навели мышь на ссылку (дочерний элемент для второго div) - по идее должен сработать onmouseover у ссылки (обработчик не задан, ничего не происходит) и onmouseout у второго div (обработчик задан, второй div должен скрыться, результат, конечно, будет виден, если наведение происходит за пределами первого div, так как иначе после скрытия второго div у первого div сработает onmouseover и второй div снова отобразится).
Так и происходит, если запретить всплытие событий event.cancelBubble = true (Pavel M., в приведённом примере скрытие второго div происходит не при наведении мыши на ссылку, а при её уходе со ссылки).
Но по умолчанию, события всплывают (или явно разрешены event.cancelBubble = false).
И это первое, что не понятно: события всплывают, а при наведении мыши на ссылку второй div не скрывается.

3) Уводим мышь за пределы ссылки, находясь на втором div и за пределами первого div, по идее должны сработать onmouseout у ссылки и onmouseover у второго div,
но в приведённом примере срабатывает onmouseout у второго div, это, как я понимаю, обозначает, что при уходе с дочернего элемента на родительский у родительского элемента возникает событие onmouseout.
И это второе, что не понятно: почему у родительского элемента элемента возникает событие onmouseout при уходе на него с дочернего элемента.

Вот ответы на эти вопросы я и хочу найти и пока не вижу, где в приведённых рассуждениях я может быть допустил ошибку.

Последний раз редактировалось bes, 08.04.2012 в 16:43.
Ответить с цитированием