Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.07.2010, 00:19
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

события и вложенные элементы
<div id="main">
<div class="qwerty"><span>qwerrtt</span><div>тут куча элементов</div>
<div class="qwerty"><span>qwert</span><div>тут куча элементов</div>
<div class="qwerty"><span>dfdfdfd</span><div>тут куча элементов</div>
...
</div>


<div>

вешаю обработчик события onmouseover на div который main
надо получить див, который вложен (class="qwerty") и внутри которого курсор мыши
дивов много, так что вешание индивидуального обработчика на каждый-бессмысленный расход памяти

Последний раз редактировалось KOLANICH, 02.07.2010 в 00:21.
Ответить с цитированием
  #2 (permalink)  
Старый 02.07.2010, 13:41
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

target/srcElement
Ответить с цитированием
  #3 (permalink)  
Старый 02.07.2010, 20:56
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

target указывает на непоследственного адресата события
srcElement -аналог для эксплорера

Последний раз редактировалось KOLANICH, 02.07.2010 в 21:02.
Ответить с цитированием
  #4 (permalink)  
Старый 03.07.2010, 00:04
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Читайте внимательно статью, там все написано.
Ответить с цитированием
  #5 (permalink)  
Старый 03.07.2010, 00:29
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

повторяю, вешать на всё свою слушалку нельзя - элементов очень много

Последний раз редактировалось KOLANICH, 03.07.2010 в 00:34.
Ответить с цитированием
  #6 (permalink)  
Старый 03.07.2010, 01:00
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

<div class="qwerty"> забыли закрыть или они вложенные?

<div id="main">
	<div class="qwerty">
		<span>qwerrtt</span>
		<div>тут куча элементов</div>
	</div>
	<div class="qwerty">
		<span>qwert</span>
		<div>тут куча элементов</div>
	</div>
	<div class="qwerty">
		<span>dfdfdfd</span>
		<div>тут куча элементов</div>
	</div>
</div>
<script type="text/javascript">
document.getElementById("main").onclick = function (event) {
	event = event || window.event;
	var target = event.target || event.srcElement;
	while ((" " + target.className + " ").indexOf(" qwerty ") == -1) {
		if (target == this) {
			return;
		}
		target = target.parentNode;
	}
	target.style.backgroundColor = "#f00";
};
</script>

Последний раз редактировалось Octane, 03.07.2010 в 01:05.
Ответить с цитированием
  #7 (permalink)  
Старый 04.07.2010, 20:32
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

кажется забыл закрыть...
спс, щас опробую
Ответить с цитированием
  #8 (permalink)  
Старый 04.07.2010, 21:14
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

а зачем (" " + target.className + " ")
почему нельзя просто target.className ???

и зачем нужно условие target==this ?
как target может быть равен объекту, создаваемому функцией?

Последний раз редактировалось KOLANICH, 04.07.2010 в 21:28.
Ответить с цитированием
  #9 (permalink)  
Старый 04.07.2010, 21:18
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Потому что у элемента может быть много CSS-классов.
<… class="someclass1 someclass2 …">

CSS-классы отделяются пробельными символа, поэтому по хорошему нужно использовать регулярное выражение, но в простейшем варианте достаточно
(" " + element.className + " ").indexOf(" " + CSSClassName + " ")
Ответить с цитированием
  #10 (permalink)  
Старый 04.07.2010, 21:35
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

спасибо
а 2й вопрос?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить mouseover распространяться ещё и на вложенные элементы? sysya jQuery 6 29.12.2009 15:26
Обработчик события: как делает jquery? Shasoft jQuery 35 22.04.2009 09:41
Как заставить this в обработчике события указывать на объект? Dmitryk Events/DOM/Window 3 16.03.2009 08:45
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47
Явный вызов процедуры обработки события. supchik Общие вопросы Javascript 18 27.01.2009 13:16