Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Событие при наведение на потомка (https://javascript.ru/forum/events/11598-sobytie-pri-navedenie-na-potomka.html)

ajon 02.09.2010 13:46

Событие при наведение на потомка
 
Столкнулся с проблемой и по всем законам понимаю, что так и должно быть, но мне-то нужно по другому))

<div id='helper'></div>
<div onmouseOver='event_over(this);'>
   <ul onmouseOver='event_over(this);'>
      <li onmouseOver='event_over(this);'>элемент</li>
   </ul>
</div>


function event_over(object)
   {
   document.getElementById('helper') = object.tagName;
   }


при наведение на DIV - всё впорядке, но во при наведение на вложенный в него ul - в helper всё равно показывает div... как обойти сию запарку? (мне нужно, чтобы событие срабатывало на максимально глубоко вложенном элементе)

если сделать по другому чуть и поставить
function event_over(object)
   {
   document.getElementById('helper') += object.tagName;
   }

то видно, что событие сработало сначала на ULБ а потом на DIV ...7 как сделать, чтобы при срабатываение на UL оно уже не срабатывало на DIV?

exec 02.09.2010 14:00

Смотрите target (для IE — srcElement) события. Он будет возвращать тот элемент, на который кликнули.

<html>
	<head>
		<title>
			Test
		</title>
	</head>
	<body>
		<div>
			<span>
				Кликни на меня!
			</span>
		</div>
		<a href="javascript://">
			Или на меня
		</a>
		<script type="text/javascript">
			document.onclick = function ( e ) {
				alert( (e || window.event)[-[1,] ? 'target' : 'srcElement'] );
			};
		</script>
	</body>
</html>

B~Vladi 03.09.2010 10:17

Цитата:

Сообщение от ajon
как сделать, чтобы при срабатываение на UL оно уже не срабатывало на DIV

Для ишака:
evt.returnValue = false;

Для остальных:
evt.stopPropagation();

Когда срабатывает на UL.


Часовой пояс GMT +3, время: 07:52.