Check what element the cursor is on upon mouseleave() with jQuery?

Tyler Nieman picture Tyler Nieman · Oct 14, 2011 · Viewed 15.1k times · Source

I have a set of list elements (<li> within a <ul>) laid out as bubbles on a chart like this, where the bubbles are the <li> elements:

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

I want to be able to detect the difference between

  1. Moving the mouse from bubble #1 to the grid
  2. Moving the mouse from bubble #1 directly to another bubble, such as bubble 2

I've attempted to use $(this) in the .mouseleave() even for a bubble, but it registers the element that you're leaving rather than the element that you're currently hovering.

Any ideas on how to get the element that the mouse is moving onto upon mouseleave()?

Answer

N Rohler picture N Rohler · Oct 14, 2011

You need to use event.toElement || e.relatedTarget:

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

(Edited to note || e.relatedTarget to ensure browser compatibility)