2013-01-22 62 views
11

我正在用javascript和jquery爲我的網站構建一個分割測試工具。現在我想要顯示每個要分割的元素,當光標經過我的預覽框中的元素時,會測試一個小小的懸浮菜單。有沒有可能做這樣的事情?我喜歡這樣的東西jquery獲取光標所在的元素

$('body').hover(function(event){ 
    console.log(event.target.nodeName); 
    // to see if it's showing up the element 
}); 

但它只是觸發一次。由於我不想使用點擊,因爲我還想顯示錨點元素上的菜單,所以我有點迷路了

回答

7

我相信你想在這裏改用hover事件的mousemove事件。

$('body').mousemove(function(evt){ 
    console.log(evt.target); 
}); 

請記住要謹慎使用mousemove

See an example here.

7

您可以使用document.elementFromPoint來做到這一點。

var element = document.elementFromPoint(x, y); 

對於前:

$('body').hover(function(event){ 
    var el = document.elementFromPoint(event.pageX, event.pageY); 
}); 

文檔:https://developer.mozilla.org/en-US/docs/DOM/document.elementFromPoint

+0

這將保持觸發一次也。而且,當你可以從'event'中獲得免費元素時,爲什麼會有人想使用'document.elementFromPoint'? – Alexander

+3

@Alexander - 在這種特殊情況下,是的。但是對於OP最初的問題,「jquery get元素在哪裏,光標是什麼」 - 「document.elementFromPoint」是要走的路。 – techfoobar

0

嘗試下面的編碼它會幫助你...

<body onMouseMove="javaScript:mouseEventHandler(event);"> 

    <script> 
    function mouseEventHandler(mEvent) { 
// Internet Explorer 
       alert(mEvent.srcElement.nodeName); //Display Node Name 
       alert(mEvent.srcElement.id); //Display Element ID 
//FireFox 
       alert(mEvent.target.nodeName);//Display Node Name 
       alert(mEvent.target.id);//Display Element ID 
      } 
    </script> 
7

如果使用鍵盤,而不是鼠標: 不jQuery的,只是簡單的JavaScript那些有興趣誰:

getSelection().getRangeAt(0).commonAncestorContainer.parentNode 
-1

有3種方法可以這樣做:

  1. 類似的東西:

    $('body').on('mousemove', function() { 
    console.log($(':hover').last().attr('name')); 
    }); 
    
  2. 爲了調試的目的,你可以在Chrome控制檯$(':hover').last() 比你想要然後按Enter鍵運行此控制檯命令懸停鼠標jush類型。

  3. 如果你想使用它constatly,我建議不要使用mousemove事件。使用類似的東西

    $('.one_of_your_trigger_element').on('mouseenter', function() { 
    var hover_element = $(':hover').last(); 
    ... 
    });