点击绝对定位的图像不会冒泡到底层图像
Click on absolute positioned image does not bubble up to underlying image
我有一个绝对位置的图像在另一个图像的顶部。
现在,当我将点击事件绑定到背景图像并单击叠加图像时,点击事件不会像预期的那样冒泡泡到背景图像。
同时,它会进一步冒泡到底层的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结构的情况下使顶部图像上的点击气泡到背景图像?
您必须触发另一个图像的点击。当涉及到鼠标事件时,重要的是结构而不是位置。
$(function(){
$("#bg").on("click", function(){
alert("Click on background");
});
$("#overlay").on("click", function(){
alert("Click on overlay - should bubble to background and container");
$("#bg").trigger('click');
});
$(".container").on("click", function(){
alert("Click on either overlay or background which bubbled through to the container");
});
});
这是一把有叉的小提琴。注意,这将导致.container
单击事件处理程序触发两次。您可以在bg
处理程序中使用return false
来防止这种情况。您只需要根据您的实际用例进行一些调整。
你唯一需要改变的是#overlay的事件处理程序
$("#overlay").on("click", function(){
alert("Click on overlay - should bubble to background and container");
$('#bg').trigger('click')
});
在js中有两个事件循环-捕获和冒泡,当它从根到通过后代到元素并返回时。事件不使用页面上的定位来传播,只有DOM结构才重要。
相关文章:
- 如何在容器中定位旋转的图像
- 在CSS中重叠相对定位的图像
- 上传图像,重新定位,保存图像
- 如何为 ajax 生成的图像设置绝对定位
- 图像(绝对定位)相对定位容器中的水平中心
- 根据其他调整大小的html元素定位背景图像
- 在包含的html文件上定位图像
- 如何在 jQuery 中将可点击的图像定位到浏览器顶部
- 如何将背景图像定位到 html 元素的左上角和右下角
- 缩放、拖动和旋转时的图像定位
- jQuery图像滑块封面图像定位问题
- Fabric JS:使用坐标(x,y)设置图像定位
- 将图像定位在随机位置
- 是否可以将图像定位在屏幕的中心而不是浏览器的中心
- 所见即所得图像定位解决方案
- 响应式地将图像定位在背景图像上的特定目标上
- MagicZoomPlus缩放图像定位
- 是否可以使用百分比相对定位将推杆图像定位在另一个图像上?
- 将图像定位在图像上
- HTML5 Javascript图像定位