Проверить, на каком элементе находится курсор на mouseleave () с помощью jQuery? - PullRequest
26 голосов
/ 14 октября 2011

У меня есть набор элементов списка (<li> в пределах <ul>) в виде пузырьков на диаграмме, подобной этой, где пузырьки - это элементы <li>:

http://i.stack.imgur.com/PR7vR.png

Я хочу быть в состоянии обнаружить разницу между

  1. Перемещение мыши из пузыря # 1 в сетку
  2. Перемещение мыши из пузыря # 1 непосредственно к другому пузырю, такому как пузырек 2

Я пытался использовать $(this) в .mouseleave() даже для пузыря, но он регистрирует элемент, который вы покидаетеа не элемент, который вы в данный момент зависаете.

Любые идеи о том, как получить элемент, на который перемещается мышь mouseleave()?

Ответы [ 2 ]

44 голосов
/ 14 октября 2011

Вам необходимо использовать event.toElement || e.relatedTarget:

$('li').mouseleave(function(e)
{
    // new element is: e.toElement || e.relatedTarget
});

(отредактировано в примечании || e.relatedTarget для обеспечения совместимости браузера)

8 голосов
/ 14 октября 2011

Если вы можете использовать ordinarey javascript, в каждом событии (e) указатель мыши и указатель мыши имеют e.relatedTarget в большинстве браузеров.IE до # 9 имеет event.toElement и event.fromElement, в зависимости от того, слушаете ли вы указатель мыши или mouseout.

somebody.onmouseout=function(e){
  if(!e && window.event)e=event;
  var goingto=e.relatedTarget|| event.toElement;
  //do something
}
somebody.onmouseover=function(e){
  if(!e && window.event)e=event;
  var comingfrom=e.relatedTarget|| e.fromElement;
  //do something
}
...