作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我像这样叠加了 3 个 div:
<div id="div1" style="height: 500px; width: 500px; position:absolute; z-index: 1"></div>
<div id="div2" style="height: 500px; width: 500px; position:absolute; z-index: 2"></div>
<div id="div3" style="height: 500px; width: 500px; position:absolute; z-index: 3"></div>
它们都有弹出不同消息的 on.click 事件处理程序
是否有可能在单击一个时,无论哪个在顶部,它都允许所有基础 div 通过单击(尝试“指针事件:无”但禁用所有功能)来触发它们的相应事件处理程序?假设我点击了 div 3,div 2 和 3 也触发了它们的事件处理程序。另外,我不想要像这样的硬编码解决方案:
$('#div3').on('click',function() {
// trigger div 1 and 2 events manually
})
指针事件的问题:没有人拥有它,不会像我想要的那样触发它的事件处理程序,有什么办法可以解决这个问题吗?
最佳答案
我不确定这个解决方案对你来说是否过于“硬编码”,但它会检测前面元素后面的任何元素并触发它们的点击处理程序(如果鼠标点击也位于该元素上方)
$('#div3').click(function(e) {
$(this).hide();
var elements = [];
var element;
var count = 0;
element = $(document.elementFromPoint(e.clientX,e.clientY));
while (element.prop("tagName") != "HTML" && count < 15) {
elements.push(element);
$(element).hide();
element = $(document.elementFromPoint(e.clientX,e.clientY));
count++;
}
$(elements).each(function() {
$(this).trigger("click");
$(this).show();
});
$(this).show();
});
fiddle :http://jsfiddle.net/13jLrarp/3/
count
是为了确保它不会陷入无限循环(以防万一),尽管它在技术上不是必需的
在 fiddle 中,点击绿色框会使红色框水平增长,点击蓝色框会使红色框垂直增长。单击它们重叠的地方会使红色框双向增长。请注意,使用 z-index 时,红色框位于其他两个上方
关于jquery - 如何让 3 个 div 重叠以允许点击触发所有底层 div 的事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28116331/
我是一名优秀的程序员,十分优秀!