javascript - elementFromPoint 选择底部元素

标签 javascript jquery jquery-ui

我正在使用 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/

相关文章:

javascript - 根据 URL 添加事件菜单或导航类

javascript - 是否有任何 JavaScript IDE 能够在 IntelliSense 中显示所有使用的对象字段和方法?

javascript - Jquery addClass 不工作

javascript - 从剑道网格内的剑道颜色选择器更新服务器

javascript - 为什么这个对话框的内容表现得如此奇怪?

JQuery Datepicker 日期格式 - 如何从 dd/mm/yyyy 更改为 dd/mm/yy?

javascript - 如何使用Ajax从asp.net Core2.2中的子模型获取值

javascript - 如何检测多个 AJAX 请求何时完成或失败?

javascript - jquery 在 contenteditable div 中输入粘贴

jQuery 拖动时获取上一个和下一个元素