Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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 ElementFromPoint用于绝对定位的元素?_Javascript_Jquery_Css Position_Absolute - Fatal编程技术网

Javascript ElementFromPoint用于绝对定位的元素?

Javascript ElementFromPoint用于绝对定位的元素?,javascript,jquery,css-position,absolute,Javascript,Jquery,Css Position,Absolute,我使用elementFromPoint来查找鼠标事件被ui掩码捕获后要传递给哪个元素。我在掩码处捕获事件,隐藏掩码,然后使用elementFromPoint(event.pageX,event.pageY)获取底层元素 问题是elementFromPoint对于绝对定位的元素似乎根本不起作用。它只给出第一个非绝对定位的父对象。是否有一种方法可以同时获取绝对位置和非绝对位置的元素,或者在获取带有elementFromPoint的父元素后,我只需手动搜索绝对位置的子元素 谢谢我尝试并创建了代码,它工

我使用elementFromPoint来查找鼠标事件被ui掩码捕获后要传递给哪个元素。我在掩码处捕获事件,隐藏掩码,然后使用elementFromPoint(event.pageX,event.pageY)获取底层元素

问题是elementFromPoint对于绝对定位的元素似乎根本不起作用。它只给出第一个非绝对定位的父对象。是否有一种方法可以同时获取绝对位置和非绝对位置的元素,或者在获取带有elementFromPoint的父元素后,我只需手动搜索绝对位置的子元素


谢谢

我尝试并创建了代码,它工作得非常好

html

js


我尝试并创建了代码,它工作得非常好

html

js


我的经验是常规的旧文档。elementFromPoint(…)也适用于绝对定位的元素,但它对元素的“顺序”很敏感(哪个元素真正“在前面”)。我发现,有时为了让它按我想要的方式工作,我必须在绝对定位元素上显式指定CSS“z-index”(有时正值为10或更多)


如果元素没有背景,只包含文本,这尤其是一个问题,因为所有元素都将在同一时间在同一位置可见。从外表上看,很难判断哪一个是真正的“在前面”,也许不是你想的那个

我的经验是常规的旧文档。elementFromPoint(…)也适用于绝对定位的元素,但是它对元素的“顺序”很敏感(哪个元素真正“在前面”)。我发现,有时为了让它按我想要的方式工作,我必须在绝对定位元素上显式指定CSS“z-index”(有时正值为10或更多)


如果元素没有背景,只包含文本,这尤其是一个问题,因为所有元素都将在同一时间在同一位置可见。从外表上看,很难判断哪一个是真正的“在前面”,也许不是你想的那个

elementFromPoint应适用于绝对定位的图元。你能提供一个JSFIDLE来重现你的问题吗?嗯,所以我只是制作了一个JSFIDLE,但一切都像我认为应该的那样工作。一定是我的代码中的某个地方出现了一个无关错误:S感谢您的帮助。Derp,我使用的是与视口相关的点,而不是事件(facepalm)元素的pageX和pageY FromPoint应该适用于绝对位置的元素。你能提供一个JSFIDLE来重现你的问题吗?嗯,所以我只是制作了一个JSFIDLE,但一切都像我认为应该的那样工作。一定是我的代码中的某个不相关的错误:S感谢您的帮助。Derp,我使用的是与视口相关的点,而不是事件的pageX和pageY(facepalm)
<div id="one">1</div>
<div id="two">2</div>
<div id="three">3</div>
<div id="four">4</div>
<div id="five">5</div>
<div id="six">6</div>
div {
    width: 50px;
    height: 50px;
    background-color: black;
    color: white;
    margin-bottom: 30px;
}
#five{
    position: absolute;
    left: 10px;
    top: 20px;
    background: red;
}
$(document).ready(function(){        
    $(document.body).bind('click', function(e){
        var elem = document.elementFromPoint(e.pageX, e.pageY);

        alert('you selected element id: ' + elem.id);
    });
});