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 при уходе на него с дочернего элемента.
Вот ответы на эти вопросы я и хочу найти и пока не вижу, где в приведённых рассуждениях я может быть допустил ошибку.