javascript – elementFromPoint选择底部元素

前端之家收集整理的这篇文章主要介绍了javascript – elementFromPoint选择底部元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 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来显示:none或pointer-events:none以找到下面的元素.我在下面创建了一个要点,返回给定点上所有元素的列表.

尝试

var elementsArray = KoreSampl.atPoint(x,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,lastElement));
            element.style[styleProp]= style; //restore
            return result;
        }
    };
    window["KoreSampl"] = new KoreSampl();
})();

猜你在找的JavaScript相关文章