我正在使用elementFromPoint来查找在被ui掩码捕获之后将鼠标事件传递给哪个元素。我在掩码中捕获事件,隐藏掩码,然后使用elementFromPoint(event.pageX,event.pageY)来获取底层元素。
问题在于,对于绝对定位的元素,elementFromPoint似乎根本不起作用。它只是给出了第一个非绝对定位的父级。有没有办法获得绝对和非绝对定位元素,或者我只需要通过elementFromPoint获取父级后,通过绝对定位的子项进行手动搜索?
由于
答案 0 :(得分:1)
我的经验是常规的旧document.elementFromPoint(...)也适用于绝对定位的元素,但它对元素的“顺序”敏感(哪个元素真的< / em>“在前面”)。我发现有时为了让它以我想要的方式工作,我必须在绝对定位的元素上明确地指定CSS“z-index”(有时具有10或更大的正值)。
如果元素没有背景并且只包含文本,则这尤其是一个问题,因为它们在同一个地方同时可见。从外观上看,很难说出哪一个真的“在前面”,也许不是你想到的那个。
答案 1 :(得分:0)
我尝试并创建了代码,它的工作非常精细have a look
HTML
<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>
CSS
div {
width: 50px;
height: 50px;
background-color: black;
color: white;
margin-bottom: 30px;
}
#five{
position: absolute;
left: 10px;
top: 20px;
background: red;
}
JS
$(document).ready(function(){
$(document.body).bind('click', function(e){
var elem = document.elementFromPoint(e.pageX, e.pageY);
alert('you selected element id: ' + elem.id);
});
});