Этот вопрос кажется отчасти связанным с
- Как проверить, мышь находится над элементом в jQuery?
- jQuery проверяет статус наведения перед запуском триггера
но все равно не совсем. Вот в чем дело: я пишу небольшую галерею, и в какой-то момент пользователь нажимает на миниатюру. Большая версия изображения отображается внутри полноэкранного режима. Все идет нормально. При наведении указателя мыши на него я показываю три изображения: близко, слева, справа, предназначенные для навигации по альбому; когда мышь покидает изображение или навигационные изображения, три навигационных изображения исчезают.
Эти три навигационных изображения частично перекрываются с основным изображением, например близкое изображение - кружок в верхнем левом углу. И это самая сложная часть.
Mouseleave срабатывает всякий раз, когда мышь перемещается с основного изображения сбоку или с основного изображения на одно из трех небольших перекрывающихся изображений. Как и ожидалось, курсор мыши запускается для каждого из небольших перекрывающихся изображений.
Однако это создает забавный эффект мигания, потому что при выходе мыши из основного изображения я скрываю () три маленьких изображения, что немедленно запускает центр мыши для основного изображения из-за перекрытия, а мышь все еще находится поверх основного изображения.
Чтобы избежать этого, я попытался определить, переместилась ли мышь после выхода из основного изображения на одно из небольших перекрывающихся изображений. Для этого я использовал этот код:
main_img.mouseleave(function() {
if (!hoverButtons()) {
doHideButtons();
}
});
function hoverButtons() {
return (close_img.is(":hover")) || (left_img.is(":hover")) || (right_img.is(":hover"));
}
Это отлично работает в Safari и Chrome, но не в FF и IE, где изображения все еще мигают. Продолжая копаться в сообщениях, кажется, что проблема заключается в ": hover", поскольку это не правильное выражение селектора, а скорее псевдокласс CSS?
Я пытался работать с переключателями, которые я переключаю / выключаю, когда нажимаю / нажимаю на разные изображения, но это тоже не работает, потому что события, кажется, запускаются в разном порядке.
Как мне это сделать? Спасибо!
РЕДАКТИРОВАТЬ: Мне, возможно, придется уточнить: перед отображением кнопок навигации я устанавливаю их соответствующие атрибуты left и top, чтобы разместить их в зависимости от положения основного изображения. Это означает, что мне нужно поработать, прежде чем я смогу вызвать .show () в селекторе jQuery. Я попытался добавить новую функцию .placeShow (), но это не совсем сработало в отношении таких селекторов, как $ (". Nav-button: hidden"). PlaceShow ().