2011-10-13 19 views
22

I tienen un conjunto de elementos de la lista (<li> dentro de un <ul>) dispuesto como burbujas en un gráfico como este, donde las burbujas son los <li> elementos:¿En qué elemento está el cursor al mouseleave() con jQuery?

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

Quiero ser capaz de detectar la diferencia entre

  1. Moviendo el ratón de burbuja # 1 a la red
  2. Moviendo el ratón de burbuja # 1 directamente a una tro de burbujas, tales como burbujas 2

he intentado utilizar $(this) en el .mouseleave() incluso para una burbuja, sino que registra el elemento que se está dejando más que el elemento que actualmente está flotando.

¿Alguna idea sobre cómo obtener el elemento al que se mueve el mouse al mouseleave()?

Respuesta

36

Es necesario utilizar event.toElement || e.relatedTarget:

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

(Editado señalar || e.relatedTarget para asegurar la compatibilidad del navegador)

+1

Nota de edición añadí anterior basado en buena llamada por @kennebec - para asegurarse de que usted tiene la compatibilidad del navegador, es una buena idea para hacer referencia a 'e.toElement || e.relatedTarget' en lugar de simplemente 'e.toElement' –

6

Si puede utilizar ordinarey javascript, cada evento (e) del ratón sobre y ratón a cabo ha un e.relatedTarget en la mayoría de los navegadores. IE before # 9 tiene event.toElement y event.fromElement, dependiendo de si está escuchando mouseover o 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 
} 
Cuestiones relacionadas