jquery - 找到某个元素覆盖的每个 DOM 元素?

标签 jquery html css dom z-index

我在页面上有一个具有非常高 z-index 的特定 DOM 元素,我需要找到它重叠的每个元素(即,在相同点上具有较低 z-index 的每个元素)

我该如何实现?

最佳答案

要获取具有较低 z-index 的所有元素,您可以使用过滤器并根据 z-index 过滤元素。

获取位置与某个元素重叠的所有元素有点棘手。
需要获取重叠元素的 Angular 的位置,然后将其与每个元素的 Angular 进行比较,看看它们是否在某处重叠。

总的来说,是这样的

var reference = $('#overlay'),
    index     = reference.css('z-index'),
    square    = getDimensions(reference);

function getDimensions(elem) {
    var offset = elem.offset();
    return [offset.top, offset.top + elem.height(), offset.left, offset.left + elem.width()];
}

$('body *').not('script, style, :hidden').filter(function() {
    // only elements with lower z-index or without z-index
    var idx = $(this).css('z-index');
    return isNaN(idx) || (idx < index);
}).filter(function() {
    // only elements that intersect with the overlaying element
    var offset = getDimensions($(this));
    return ((offset[1] > square[0]) && (offset[0] < square[1])) &&
           ((offset[3] > square[2]) && (offset[2] < square[3]));
});

FIDDLE

关于jquery - 找到某个元素覆盖的每个 DOM 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28786198/

相关文章:

jquery - 固定导航滚动

javascript - 使用 jQuery Select2 多个未获取 html 选择选项

javascript - 在新窗口中预览在文本区域中键入的整个文档

javascript - 使用 JavaScript 显示隐藏的 div

html - 调整浏览器大小时,导航栏未调整大小

javascript - 如何滑出旧div并滑入新div并循环文本内容?

jquery - 使用jquery过滤

javascript - 在 jQuery Colorbox 中禁用汽车标题元素

java - HTML 按钮 onClick 未启动 Applet

javascript - Safari iOS 上的点击功能与 PC 上的点击功能不同,带有波纹动画的 ng-click