![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| SlavaDeveloper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 7.10.2008 Репутация: нет Всего: нет |
Приветствую всех! При реализации всплывающих попапов при наведении на ссылку столкнулся с проблемой бесконечной генерации событий mouseenter и mouseleave в том случае, когда всплывающий попап перекрывает область элемента, на который навешены события - происходит мерцание попапа при нахождении мышли в области, где перекрываются элементы управления.
Пожалуйста, подскажите, как можно решить (обойти) эту проблему. Ниже пример кода и несколько скриншотов. ![]() ![]()
|
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 4 Всего: 102 |
может проще поискать готовый плагин к jQuery?
-------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| SlavaDeveloper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 7.10.2008 Репутация: нет Всего: нет |
Так такого нет, дело в том, что события mouseenter и mouseleave специально создавались jQuery как улучшенный аналог mouseover и mouseout. Скорее всего буду пробовать с явными координатами и событием mousemove
|
|||
|
||||
| SlavaDeveloper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 7.10.2008 Репутация: нет Всего: нет |
Проблему решил использованием события mousemove
$(document).ready(function () { $(document).mousemove(function (e) { var coordinates = getCoordinates('#aTest'); if (pointInsideElement(e.pageX, e.pageY, coordinates.Left, coordinates.Top, coordinates.Right, coordinates.Bottom)) { $('#popup').show(); } else { $('#popup').hide(); } }); }); var valueInRange = function (value, min, max) { return (value >= min) && (value <= max); } var pointInsideElement = function (x, y, leftEl, topEl, rightEl, bottomEl) { return valueInRange(x, leftEl, rightEl) && valueInRange(y, topEl, bottomEl); } var getCoordinates = function (selector) { var element = $(selector); var result = new Object(); result.Left = element.offset().left; result.Top = element.offset().top; result.Right = element.offset().left + element.width(); result.Bottom = element.offset().top + element.height(); return result; } Тему можно закрывать |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |