单击元素时,获取背景中的元素列表
On element click, get a list of elements that are in the background?
当我点击一个元素时,我想得到一个位于背景中并与点击的元素相交的元素列表。是否可以在单击处理程序中执行此操作?
$('<div id="overlay" />').appendTo('body').on('click', function(e){
console.log(e.target);
// was the click on top of div#a, div#b or both? how can I know this?
});
body{
position: relative;
}
div{
border: 1px solid red;
display: inline-block;
padding: 10px;
}
#overlay{
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
border: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="a">
test
<div id="b">
test
</div>
</div>
您需要手动循环遍历DOM中的所有元素,并将边界框与单击的鼠标位置进行比较。事件对象本身不知道任何CSS定位。类似于:
$('<div id="overlay" />').appendTo('body').on('click', function(e){
var x = e.pageX;
var y = e.pageY;
var elms = $('body *').not(this).filter(function() {
var b = this.getBoundingClientRect();
return x > b.left && x < b.left+b.width && y > b.top && y < b.top+b.height;
});
console.log(elms);
});
您可能需要限制要与之进行比较的元素。演示:http://jsfiddle.net/o2v6v3gk/
请注意,这不会检测元素是否在覆盖层的"后面",也就是z索引。
相关文章:
- 如何附加<ul><李>元素位于某个特定条件的父元素列表之间
- 在元素列表中搜索给定字符串
- 生成ACF标记位置的数组(元素列表后缺少])
- 如何删除元素列表中的类并添加到另一个元素 Jquery.
- 什么'这是ES6中制作重复元素列表的等效方法
- jQuery单击并显示元素列表
- 如何在元素列表上使用jquery选择器
- 如何使用 Cycle.js 创建动态、重复的元素列表
- dc.js:如何在对象元素列表上减少计数
- 语法错误:使用 setInterval 时元素列表后缺少 ]
- 错误:火狐在元素列表后给我“缺少]”
- 使用字符串元素列表作为 Select2 组件的源
- 使用 jQuery 从元素列表创建特定属性的数组
- document.createElement();是否有我可以创建的元素列表
- 断言元素列表遵循带有 JavaScript 承诺的规则
- 在 jquery 中动态创建元素列表的最佳实践
- 如何使用 .nextUntil 将两个不同的类添加到
元素列表中
- 如何将一个元素列表移动到另一个性能最佳的元素中
- Javascript - 缺少 ] 在元素列表之后
- jquery中的li元素列表