Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   отсрочить проверку отлавливания события (https://javascript.ru/forum/jquery/26514-otsrochit-proverku-otlavlivaniya-sobytiya.html)

Rootpassword 11.03.2012 15:37

так вы проще сделайте. если у вас не уход, а переход, то не таймаут, а мгновенное исполнение.

Polkan 11.03.2012 16:38

Цитата:

Сообщение от Rootpassword (Сообщение 162498)
так вы проще сделайте. если у вас не уход, а переход, то не таймаут, а мгновенное исполнение.

Ммм, но с точки зрения элементов-то это как определить? Есть блок: мышь пришла - событие mouseenter, мышь ушла - событие mouseleave. Откуда блок узнает ушла мышь вообще или перешла на другой блок?
Пробовал повесить на корневой контейнер такое:
$("#sidebarMenu").bind('mouseenter',function(){$("#sidebarMenu").attr('flagOver',1);});
$("#sidebarMenu").bind('mouseleave',function(){$("#sidebarMenu").attr('flagOver',0);});
Но при проверке этот флаг почему-то всегда оказывается единицей.
Хотя нет, не оказывается он единицей, меняется правильно, вот только уже после того, как мне его нужно проверять (по событию mouseleave для потомков)
Да и опять как-то криво это выглядит.

Rootpassword 11.03.2012 16:45

Ну так вы создаете таймер по событию ухода, в него вешаете функцию по закрытию, получаете intervalID=settimeout(500, func)
Дальше, грубо говоря, заводите массив, в него загоняете intervalID + func. Если окончательно ушли, через 0.5 секунды таймер вам меню свернет, массив почистит ваша func. Если же пришли на другой элемент, то чистим таймауты через cleanInterval и исполняем функции сразу, массив чистим.
Массив, а не переменные, на случай, если пользователь нервный и быстро мышку двигает.
Визуально будет как надо.

Polkan 11.03.2012 16:59

Rootpassword, спасибо за помощь, но, наверное, это просто выше моего понимания. :) Пусть пока остается по-старому.


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