我正在尝试创建一个jQuery脚本,以查找在给定坐标处是否可见所需元素(不是从其他元素隐藏)。
对于这个目标,我正在尝试使用document.elementFromPoint
函数,但它似乎不起作用(请参阅jsFiddle)。
JS
var test = $("#test");
var debug = $("#debug");
// "test" is larger than 100x100 px, so I suppose to find it here
if(document.elementFromPoint(100,100) === test) {
debug.html("found!");
}
else {
debug.html("not found");
}
我错过了什么?
答案 0 :(得分:3)
elementFromPoint
返回DOMElement
,因此您需要获取DOM元素而不是jQuery对象:
if(document.elementFromPoint(100,100) === test[0]) {
debug.html("found!");
}
else {
debug.html("not found");
}
另一种方法是使用is
jQuery方法this way:
if(test.is(document.elementFromPoint(100,100))) {
/* found */
}
else {
/* not found */
}
Document.elementFromPoint()
从正在调用elementFromPoint方法的文档中返回元素,该元素是位于给定点下的最顶层元素。要获取元素,请通过坐标(以CSS像素为单位)指定相对于包含文档的窗口或框架中最左上角点的点。
.is( elements )
描述:针对选择器,元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定的参数匹配,则返回true。
元素
输入:
Element
与当前元素集匹配的一个或多个元素。
var test = $("#test");
var debug = $("#debug");
if (document.elementFromPoint(100, 100) === test[0]) {
debug.html("found!");
} else {
debug.html("not found");
}

#test {
display: inline-block;
width: 200px;
height: 200px;
background-color: green;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test"></div>
<p id="debug"></p>
&#13;