【发布时间】:2013-05-24 15:45:43
【问题描述】:
我在另一个图像之上有一个绝对定位的图像。
现在,当我将单击事件绑定到背景中的图像并单击覆盖图像时,单击事件不会按预期冒泡到背景图像。
同时,它确实会进一步上升到底层 div。
<div class="container">
<img src="http://dummyimage.com/600x400/000/fff&text=Background" id="bg" />
<img src="http://dummyimage.com/100x100/ff00ff/000000&text=Overlay" id="overlay" />
</div>
$(function(){
$("#bg").on("click", function(){
alert("Click on background");
});
$("#overlay").on("click", function(){
alert("Click on overlay - should bubble to background and container");
});
$(".container").on("click", function(){
alert("Click on either overlay or background which bubbled through to the container");
});
});
jsfiddle 在这里:http://jsfiddle.net/V9dkD/2/
我真的不明白为什么会发生这种情况。
如何在不更改 html 结构的情况下让顶部图片的点击冒泡到背景图片?
【问题讨论】:
-
事件冒泡到由 html 结构设置的祖先,而不是发生在 CSS 下方的任何位置。但是从覆盖层上的点击处理程序中,您可以调用
$("#bg").trigger("click")... -
您的图像是兄弟姐妹,而不是父/子。从视觉上看,它们可能处于这种关系中,但在 DOM 中却不是。
标签: javascript jquery events click event-bubbling