Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在单击的像素内获取元素?_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 在单击的像素内获取元素?

Javascript 在单击的像素内获取元素?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我不知道从哪里开始,我已经在谷歌上搜索了几天,试图找出如何获取页面上选中/点击像素内的元素。我从一位同事那里看到了这个函数,但我不知道它的作用是什么: function onclick(e){ var x = e.clientX, y = e.clientY; $("*").filter(function(){ position.left > x && position.left + width < x;

我不知道从哪里开始,我已经在谷歌上搜索了几天,试图找出如何获取页面上选中/点击像素内的元素。我从一位同事那里看到了这个函数,但我不知道它的作用是什么:

function onclick(e){ 
    var x = e.clientX, 
        y = e.clientY; 

    $("*").filter(function(){ 
        position.left > x && position.left + width < x;
         /*same for height*/;
    }); 
}

简单地说,我需要能够单击一个像素并获取该像素内的div/元素。对于我的应用程序来说,这并不像只说div.class那么简单,因为元素之间用不透明度和z索引重叠

单击文档中的任何位置都将记录单击的元素

$document.clickfunction{ console.loge.target; }; .盒子{ 宽度:50px; 高度:50px; 背景:蓝色; } 您可以使用document.elementFromPointx,y;如果你想通过x和y坐标得到一个元素。 有关文档,请参阅

function onclick(e){ 
    var x = e.clientX, 
        y = e.clientY,
        el = document.elementFromPoint(x, y);
}

问题中显示的代码不起作用,因为没有定义变量位置、宽度,但是它的基本思想是正确的——遍历所有元素,并将单击的坐标与每个元素的框进行比较


我想自己试试。移动了正在工作的演示而不是片段。

像素内是什么意思?你是说像素所在的元素吗?@isherwood基本上,点击的位置就是它将选择的元素。忽略DOM,仅通过填充、宽度、边距等来获取元素实际不在的位置。要了解发生的原因,请使用一些CSS设置{color:transparent;background:red;},因为文本元素是矩形,就像其他未应用CSS剪裁的元素一样。根据与所单击元素中的字符串相关联的文本引擎,您必须执行近乎魔术的操作来确定单击的位置是空白还是负空格。所以我很确定,如果没有一些非常奇特和复杂的代码magic,这是不可能的。OP需要所有包含给定点的元素。点击测试,也就是说。在这种情况下,你的标题和问题的措辞是反向的。这正是我不想要的,也不会起作用。我的应用程序中的元素彼此重叠,具有z索引和不透明度,因此我不能只选择单击的元素,我必须根据单击的像素进行区分。我认为这几乎是不可能的。如果我错了,并且这是可能的,那么它将需要大量的代码,而不是太多的代码。看看我的答案。尽管考虑一些有趣的问题,比如如何处理iframe、边界半径等,确实意味着要做更多的工作。这是一个很酷的方法,但它只返回点击次数最多的元素。提供的MDN文章对此很清楚。编辑:将演示移到外部页面,因为此示例中的代码片段环境太多。这正是我想要的,我将接受答案。据我所知,这是你能得到的最好的。谢谢