Как определить находится ли мышка над элементом в данный момент?

Нужно определить находится ли мышь над данным элементом прямо в данный момент. Hover() не подходит, так как он инициализирует события .mouseenter() и .mouseleave(), а мне нужно проверить прямо в данный момент (мышь уже может быть на элементе).
  • Вопрос задан
  • 14308 просмотров
Пригласить эксперта
Ответы на вопрос 4
@nikosias
var info;
$('body').mousemove(function(e){
  if (info !==e.target){
  	console.log(e.target);
    info =e.target;
  }
});
Ответ написан
Комментировать
нужно обрабатывать события onmouseover и onmouseout (если я не ошибаюсь в названиях) и записывать элементу какой-то аттрибут: мышка зашла на элемент - записали аттрибут, мышка ушла - убрали аттрибут. но у вас таких элементов будет много из-за того, что событие всплывает вверх и потому чтобы найти элемент, на котором сейчас мышка нужно будет найти элемент, у которого установлен аттрибут, но у него нет детей с установленным аттрибутом

да, скорость работы будет желать лучшего при большом DOM-дереве, но если у вас DOM-дерево не изменяется, то можно зазеркалить ваше DOM-дерево на какую-то структуру данных, с которой уже будете работать напрямую. если же DOM-дерево изменяется, вам нужно будет синхронизировать эту вашу структуру с DOM-деревом
Ответ написан
@AnjeyTsibylskij
Можно реально отследить, находится ли сейчас курсор на нужном элементе. Вот как это выглядит на практике

*Результат смотреть в консоли.
Ответ написан
Комментировать
@napa3um
DOM получает информацию о позиции мыши исключительно по событиям, отдельного API для доступа к координатам мыши нет. Если браузер не посылает событий мыши при попадании элемента под неподвижный курсор мыши, то из JS-песочницы ничего с этим не поделать. (Если посылает, то https://developer.mozilla.org/en-US/docs/Web/API/D... поможет определить элемент по координатам курсора.)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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