3

jQuery中是否有任何方法可以选择位于特定位置的所有元素,例如选择位于 left:100 和 top:300 的元素,另一个 div 位于同一位置,单击时我想获取两个 Div 的 ID ?

如果我可以选择和元素位于一系列位置,那就太好了,

http://jsfiddle.net/simmi_simmi123/YjC6y/1908/

这个 Fiddle 但它只显示顶部 div 的 ID。

$(document).ready(function(){        
    $(document.body).bind('click', function(e){
        var elem = document.elementFromPoint(e.pageX, e.pageY);

        alert('you selected element id: ' + elem.id);
    });
});
4

2 回答 2

3

试试我的小提琴http://jsfiddle.net/YjC6y/1911/

它使用来自可能 dup 的代码,正如您在原始帖子中所评论的那样:

$(document).ready(function(){        
    $(document.body).bind('click', function(e){
        var elems = GetAllElementsAt(e.pageX, e.pageY);

        elems.each(function() {
            alert($(this).attr('id'));
        });
    });
});

function GetAllElementsAt(x, y) {
    var $elements = $("body *").map(function() {
        var $this = $(this);
        var offset = $this.offset();
        var l = offset.left;
        var t = offset.top;
        var h = $this.height();
        var w = $this.width();

        var maxx = l + w;
        var maxy = t + h;

        return (y <= maxy && y >= t) && (x <= maxx && x >= l) ? $this : null;
    });

    return $elements;
}

这篇文章的主要功劳@hunter:在jquery中查找堆叠在(视觉上)一个元素下的元素

于 2013-05-22T14:18:50.027 回答
0

像这样的东西-

$('*').filter(function () {
    if ($(this).position().left === 100 && $(this).position().top === 300)
      return true;
    else
      return false;
}).each(function () {
    console.log($(this).attr('id'));
});

演示--> http://jsfiddle.net/YjC6y/1910/

于 2013-05-22T14:10:37.597 回答