Javascript.RU

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

mouseover, mouseout - не распространяется на дочерние элементы
Штука такая:
<div style="display:inline" id="myDiv">Some Text<span style="display:none"><select..></select></div>

Event.observe('myDiv', 'mouseover', this.onIn.bindAsEventListener(this));
Event.observe(this.container, 'mouseout', this.onOut.bindAsEventListener(this));

так вот в чём проблема - при наведении на текст(some text) отрабатывает mouseover - там я показываю внутренний скрытый span. Но когда я мышь увожу на этот select в спане - срабатывает mouseout!! В в3ц вроде пишет, что он mouseover, mouseout распространяется на все дочерние элементы. Собсна хотелось-бы понять, почему так и что происходит. Если событие вешается на все дочерние - то получается отрабатывает mouseout с textNode - some text что-ли?
Ответить с цитированием
  #2 (permalink)  
Старый 04.10.2008, 10:57
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Во-первых ты не закрыл спан, во вторых ты пользуешся фремворком. w3c за фреймворки не отвечает...
Ответить с цитированием
  #3 (permalink)  
Старый 04.10.2008, 11:15
Новичок на форуме
Отправить личное сообщение для barmaley Посмотреть профиль Найти все сообщения от barmaley
 
Регистрация: 15.07.2008
Сообщений: 8

ну спан - это я тут накидал. ща разобрался - и over & out всплывают на всех дочерних. но ёлки, в диве находится селект - я на селект навожу - всплывает mouseout на диве - почему, ведь селект внутри дива. и как отследить уход из div-a и всего его содержимого?
Ответить с цитированием
  #4 (permalink)  
Старый 05.10.2008, 12:38
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

в браузерах (в ФФ точно) есть баги: при переходе границы елементов может всплывать аут. Так что надо писать функции с таймером: на аут ставить таймер, а на овер - отменять.
Ответить с цитированием
  #5 (permalink)  
Старый 05.10.2008, 14:36
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

ZoNT,
Разве это баги? Это стандартное всплывание события.
Ответить с цитированием
  #6 (permalink)  
Старый 05.10.2008, 16:21
Новичок на форуме
Отправить личное сообщение для barmaley Посмотреть профиль Найти все сообщения от barmaley
 
Регистрация: 15.07.2008
Сообщений: 8

вообщем-то я оставил как есть - при переходе внутри элемента к другому элементу - сначала аут срабатывает и сразу-же over над внутренним элементом - т.е. при движении он прячется и тут-же показывается - вроде не мерцает
Ответить с цитированием
  #7 (permalink)  
Старый 05.10.2008, 23:40
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Сообщение от Андрей Параничев Посмотреть сообщение
ZoNT,
Разве это баги? Это стандартное всплывание события.
естественно баги: если есть див, а в нём элемент поменьше, то при переходе див/элемент (кусор НЕ выходит за пределы дива) происходит мгновенный маусаут+маусовер дива.
Ответить с цитированием
  #8 (permalink)  
Старый 09.07.2010, 16:40
Новичок на форуме
Отправить личное сообщение для verdim Посмотреть профиль Найти все сообщения от verdim
 
Регистрация: 09.07.2010
Сообщений: 2

Люди !!!! Как хорошо, что я на Вас напал .... У меня происходит примерно такая же фигня:
есть несколько вложенных друг в друга div, два из них наложенные с разными z-index для создания меню. Стоят обработчики события onmouseover и onmouseout. И вот что диагностикой обнаружено:
цвет иконки путем сокрытия иконки меняется (иконки для того, чтобы все было видно нормально при любых условиях);
вначале срабатывает onmouseover (вроде все нормально, - так и должно быть), а затем сразу же срабатывает onmouseout и этим все заканчивается. И еще: не могу поймать разницу между выходом из меню вообще (чтобы закрыть все дочерние окна) и в родительское, чтобы закрыть исходное ....
Будьте добры, разъясните непонятливому (желательно на уровне детского сада) в чем моя ошибка и как ее исправить ...
С уважением, Дмитрий
P.S. Лучше продублировать мне на почту, чтобы всем было хорошо
(мало ли потеряю адрес).
Ответить с цитированием
  #9 (permalink)  
Старый 05.10.2011, 15:16
Интересующийся
Отправить личное сообщение для Роман Валерьевич Посмотреть профиль Найти все сообщения от Роман Валерьевич
 
Регистрация: 19.09.2011
Сообщений: 23

Сообщение от ZoNT Посмотреть сообщение
естественно баги: если есть див, а в нём элемент поменьше, то при переходе див/элемент (кусор НЕ выходит за пределы дива) происходит мгновенный маусаут+маусовер дива.
Сообщение от Андрей Параничев Посмотреть сообщение
ZoNT,
Разве это баги? Это стандартное всплывание события.
Меня этот вопрос тоже интересует. Столкнулся с подобной ситуацией в IE7. Если это всплывание события, то почему оно таким образом проявляется? Почему происходит моментальный вызов с возвратом mouseout, если никакие действия к генерации этого события не приводят.

Я склонен относить подобное поведение к глюку, но хочу разобраться окончательно чтобы точно знать.
Ответить с цитированием
  #10 (permalink)  
Старый 05.10.2011, 15:34
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

это не глюк .дело в том что при вложенных элементах возникает событие оут у родительского при переходе на дочерний. но за счёт того что у вас обработчик на родительском и идёт всплытие -события генерируются в такой последовательности оут-всплытие события-овер.и почему пропускается оут в других браузерах это странно ,объяснение вижу только одно-вложенный контейнер пустой -а при пустых контейнерах событие как бы проваливается в нижний заполненный.и не важно родительский он или просто подложенный.прозрачность ему чуть поменяйте и проваливание отпадёт или бекграунд ему задайте

Последний раз редактировалось dmitriymar, 05.10.2011 в 15:37.
Ответить с цитированием
Ответ


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

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