Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.03.2013, 14:29
Новичок на форуме
Отправить личное сообщение для tutelaris Посмотреть профиль Найти все сообщения от tutelaris
 
Регистрация: 30.03.2013
Сообщений: 8

Движение по элементам блока без перезапуска функции выпадающеего меню.
Итак, у меня есть горизонтальное выпадающее меню. При наведении мышки на изображение, появляется блок и медленно разворачивается. Когда я перевожу мышку с изображения на блок, функция, которая выполняет разворачивание этого блока (увеличивает его высоту с интервалом в 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>

Заранее благодарю за ответ.
Ответить с цитированием
  #2 (permalink)  
Старый 30.03.2013, 14:36
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

проверять event.toElement || event.relatedTarget если не ошибаюсь
Ответить с цитированием
  #3 (permalink)  
Старый 30.03.2013, 14:37
Аватар для zilker
Профессор
Отправить личное сообщение для zilker Посмотреть профиль Найти все сообщения от zilker
 
Регистрация: 30.07.2011
Сообщений: 189

Используйте события mouseenter/mouseleave. Но они не кроссбраузерные, подробнее здесь - http://learn.javascript.ru/mousemove...-и-mouseleave
Ответить с цитированием
  #4 (permalink)  
Старый 30.03.2013, 15:10
Новичок на форуме
Отправить личное сообщение для tutelaris Посмотреть профиль Найти все сообщения от tutelaris
 
Регистрация: 30.03.2013
Сообщений: 8

Спасибо, сейчас почитаю эти статейки и попробую)
Ответить с цитированием
  #5 (permalink)  
Старый 26.04.2013, 08:15
Новичок на форуме
Отправить личное сообщение для tutelaris Посмотреть профиль Найти все сообщения от tutelaris
 
Регистрация: 30.03.2013
Сообщений: 8

Возможно, я слишком глуп, но я не смог разобрался. У меня такой код:
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;
}

но как связать свою функцию с этой - не понимаю. Видимо, мой мозг на это не способен. Помогите пожалуйста.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с аккордионом и меню Tie ExtJS 3 01.09.2011 13:36