Движение по элементам блока без перезапуска функции выпадающеего меню.
Итак, у меня есть горизонтальное выпадающее меню. При наведении мышки на изображение, появляется блок и медленно разворачивается. Когда я перевожу мышку с изображения на блок, функция, которая выполняет разворачивание этого блока (увеличивает его высоту с интервалом в 20мс по 1px) снова запускается. И так при переводе на каждый элемент блока. Можно ли как-нибудь сделать, чтобы он работал едино? То есть, чтобы при наведении на блок, на изображение, которое вызывает появление блока, и на элементы блока выполнялась одна и та же функция? Объединить в один div нельзя по причине структуры сайта. Вот код, в котором, я думаю, и находится ошибка:
<a href="main.htm" class="ex1" onMouseOver="over('list');" onMouseOut="out('list');"> <img src="img/buttons/main.png"> <div id="list" onMouseOver="over('list');" onMouseOut="out('list');"> <a href="#"><img src="img/buttons/menu1.png"></a> <br><a href="#"><img src="img/buttons/menu2.png"></a> </div> </a> Заранее благодарю за ответ. |
проверять event.toElement || event.relatedTarget если не ошибаюсь
|
Используйте события mouseenter/mouseleave. Но они не кроссбраузерные, подробнее здесь - http://learn.javascript.ru/mousemove...-и-mouseleave
|
Спасибо, сейчас почитаю эти статейки и попробую)
|
Возможно, я слишком глуп, но я не смог разобрался. У меня такой код:
function over(objId) { var obj=document.getElementById(objId); obj.style.display="block"; opacity=0.0; setTimeout(function frame() { if (opacity<=1.0) { opacity=opacity + 0.1; obj.style.opacity=opacity; time=setTimeout(frame, 10); } } , 10); } И мне нужно, чтобы при переходе с элемента, который вызывает функцию сверху, на тот блок, который появляется, функция продолжала свою работу, а не прерывалась и не начиналась заново. Я прочитал те статьи с событиями relatedTarget, fromElement и toElement. Понял, что нужно использовать такую конструкцию: function doSomething(e) { if (!e) var e = window.event; var relTarg = e.relatedTarget || e.toElement; } но как связать свою функцию с этой - не понимаю. Видимо, мой мозг на это не способен. Помогите пожалуйста. |
Часовой пояс GMT +3, время: 16:54. |