ElementFromPoint用于绝对定位的元素?

时间:2013-07-17 20:59:49

标签: javascript jquery css-position absolute

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

问题在于,对于绝对定位的元素,elementFromPoint似乎根本不起作用。它只是给出了第一个非绝对定位的父级。有没有办法获得绝对和非绝对定位元素,或者我只需要通过elementFromPoint获取父级后,通过绝对定位的子项进行手动搜索?

由于

2 个答案:

答案 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);
    });
});