繁体   English   中英

jquery获取光标所在的元素

[英]jquery get element where the cursor is

我正在使用javascript和jquery为我的网站构建一个splittesting工具。 现在我想显示每个元素,当光标经过我的预览框中的元素时,我想分割一些小的hovermenu。 有没有可能做这样的事情? 我喜欢这样的事情

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

但它只触发一次。 因为我不想使用点击,因为我也想在锚元素上显示菜单我有点迷失

我相信你想在这里使用mousemove事件而不是hover事件。

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

请记住谨慎使用mousemove

在这里查看示例。

您可以使用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

如果您使用的是键盘而不是鼠标:不是jQuery,只对那些感兴趣的人使用简单的JavaScript:

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

尝试下面的编码它会帮助你......

    <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>

有3种方法可以做到:

  1. 像这样的东西:

     $('body').on('mousemove', function() { console.log($(':hover').last().attr('name')); }); 
  2. 出于调试目的,您可以在chrome console $(':hover').last()输入类型.last $(':hover').last() hover鼠标悬停在所需的位置,然后按Enter键运行此控制台命令。

  3. 如果你想继续使用它,我建议不要使用mousemove事件。 使用类似的东西

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM