识别指定位置的所有元素

时间:2013-05-22 13:59:36

标签: jquery html css html5

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

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

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

这个小提琴,但它只显示顶级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);
    });
});

2 个答案:

答案 0 :(得分: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:find elements that are stacked under (visually) an element in jquery

答案 1 :(得分: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/