2013-01-22 64 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(); 
    ... 
    });