@lutio

Onmouseover — при быстром прохождении мыши через объект?

Собственно суть проблемы - нужно чтобы всплывал див по onmouseover на объекте. А при нахождении мыши вне объекта данный див должен пропадать. При быстром прохождении мыши через цель - нужный нам див всплывет - но не пропадет - так как мышь на момент всплытия будет уже не на цели. Т.е. onmouseout событие сработает только если мышь будет на цели - а это к сожалению не всегда так.
Как можно решить данную проблему? (на данный момент пробовал разные варианты)
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 3
@dmitryKovalskiy
программист средней руки
Попробуйте поставить в onmouseover небольшой таймаут на всплытие, если за это время курсор не убежит - сработает показ. Если убежит - сделайте cleartimeout.
Ответ написан
Комментировать
@frees2
Пример на www.dulsky.eu/v
$(document).ready(function() { $('#btn1666').hover(function(){ $(this).remove();
$.getJSON('https://www.googledrive.com/host/0B5BnJ1LwnetIWDV6ZnV5QkE4Nnc', function(data) {for(var i=0;i<data.users.length;i++){

$('.canal').append('<br><input type=\"image\" name=\"message\" value=\"'+data.users[i].id+ '\" src=\"'+data.users[i].num+'\"> ' + data.users[i].text + ' <br><br><br>' ).hide().fadeIn(1000); 
}
Ответ написан
Комментировать
1. Не нужно сразу показывать ваш див, пользователь может просто мышкой провел, чтоб закрыть вкладку... - нужен тайм-аут
2. mousein и mouseout нужны и у самого объекта и у дива, и тут не важно показывается ли ваш див поверх объекта или рядом.

В итоге получаем следующее (я всегда делаю так и в выпадающих меню и в ховер-дивах и в других. подобных случаях):
- mousein на объекте - запускаем таймер, по истечению которого показываем див.
- mouseout на объекте - сбрасываем таймер и mousein. Запускаем таймер, по истечению которого скрываем див.
- mousein на диве - сбрасываем ВСЕ таймер с объекта и больше ничего не делаем
- mouseout на диве - Запускаем таймер, по истечению которого скрываем див.
Длительность таймеров подбирается на вкус, я почти всегда использую 50-100мс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы