2011-10-13 57 views
22

我有佈置(一個<ul><li>)的一組列表元素的這樣一個圖表,其中,所述氣泡是<li>元件上以氣泡:使用jQuery檢查mouseleave()上光標所在的元素?

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

我希望能夠檢測出

  1. 之間差從移動氣泡#1的鼠標到網格
  2. 移動從氣泡#鼠標1 直接一個諾特爾泡沫,如泡2

我已經嘗試使用在.mouseleave()$(this)即使是泡沫,但它註冊,你要離開,而不是你目前正在徘徊的元素的元素。

關於如何獲取鼠標移動到的元素的任何想法mouseleave()

回答

36

您需要使用event.toElement || e.relatedTarget

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

(編輯注意|| e.relatedTarget確保瀏覽器的兼容性)

+1

注編輯 - 確保你有瀏覽器的兼容性,這是引用'e.toElement一個好主意|| e.relatedTarget'而不只是'e.toElement' –

6

如果你可以使用ordinarey的JavaScript,每一個事件(E)鼠標和鼠標出了 在大多數瀏覽器中都是e.relatedTarget。 #9之前的IE具有event.toElement和event.fromElement,具體取決於您是否在偵聽mouseover或mouseout。我基於由@kennebec良好的通話上面添加

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 
}