gpt4 book ai didi

javascript - elementFromPoint 选择底部元素

转载 作者:可可西里 更新时间:2023-11-01 02:53:49 32 4
gpt4 key购买 nike

我正在使用 jquery/javascript 开发这个拖放应用程序,我必须平衡两者来完成我想要的。

var drop = document.elementFromPoint($(this).offset().left, $(this).offset().top);

我在这里尝试用这段代码做的是获取我的 draggable 试图放入的元素(当前悬停在上面)。然而,这将始终返回我的可拖动对象,而不是它下面的表格单元格 (td)。

因为我知道我正在寻找一个 td 元素,有没有办法将 var drop 设置为类似:

var drop = document.elementFromPoint(x, y, 'td')?

或者是否有更好的方法来执行此操作?

最佳答案

由于 document.elementFromPoint 返回最顶层的元素,您需要暂时将 draggable 设置为 display:nonepointer-events:none 找到它下面的元素。我在下面创建了一个要点,它返回给定点的所有元素的列表。

尝试

var elementsArray = KoreSampl.atPoint(x,y,yourTableElement);

var elementsArray = KoreSampl.fromEvent(dropEvent, yourTableElement);

然后

for(var i=0; i<elementsArray.length; i++) {
//loop through elementsArray until you find the td you're interested in

}

使用以下要点:https://gist.github.com/2166393

;(function(){
//test for ie: turn on conditional comments
var jscript/*@cc_on=@_jscript_version@*/;
var styleProp = (jscript) ? "display" : "pointerEvents";

var KoreSampl = function() {};
KoreSampl.prototype.fromEvent = function(e, lastElement) {
e = e || window.event; //IE for window.event
return this.atPoint(e.clientX, e.clientY, lastElement);
};
KoreSampl.prototype.atPoint = function(clientX, clientY, lastElement) {
//support for child iframes
var d = (lastElement) ? lastElement.ownerDocument : document;
//the last element in the list
lastElement = lastElement || d.getElementsByTagName("html")[0];

var element = d.elementFromPoint(clientX, clientY);
if(element === lastElement || element.nodeName === "HTML") {
return [element];
} else {
var style= element.style[styleProp];
element.style[styleProp]="none"; //let us peak at the next layer
var result = [element].concat(this.atPoint(clientX,clientY,lastElement));
element.style[styleProp]= style; //restore
return result;
}
};
window["KoreSampl"] = new KoreSampl();
})();

关于javascript - elementFromPoint 选择底部元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8810378/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com