document.elementFromPoint在jQuery中不起作用

时间:2014-11-10 15:01:12

标签: jquery dom visibility

我正在尝试创建一个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");
}

我错过了什么?

1 个答案:

答案 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;
&#13;
&#13;