如何修改jQuery代码实现点击Overlay区域关闭图片放大遮罩?
解决方案:点击Overlay空白区域关闭图片放大层
要实现点击图片以外的Overlay区域关闭放大层,需要调整事件绑定逻辑,具体修改如下:
- 移除原有的
#imgBig点击关闭事件,转而给#overlay绑定点击事件 - 在
#overlay的点击回调中,判断点击目标是否为放大图片本身,若不是则执行关闭操作 - 给
#imgBig添加事件阻止冒泡,避免点击图片时触发#overlay的关闭逻辑
修改后的完整代码:
$(".brick img").click(function() { $("#imgBig").attr("src", $(this).prop('src')); $("#overlay").show('slow'); $("#overlayContent").show('slow'); }); // 点击Overlay区域关闭 $("#overlay").click(function(e) { // 判断点击的不是放大后的图片 if (!$(e.target).is("#imgBig")) { $("#imgBig").attr("src", ""); $("#overlay").hide(); $("#overlayContent").hide(); } }); // 阻止图片的点击事件冒泡到Overlay $("#imgBig").click(function(e) { e.stopPropagation(); });
原理说明:
e.target获取当前点击的DOM元素,通过$(e.target).is("#imgBig")判断是否点击了图片本身e.stopPropagation()阻止图片的点击事件向上冒泡到父级的Overlay,确保点击图片时不会触发关闭逻辑
内容的提问来源于stack exchange,提问作者GamingLegion
相关产品推荐
相关产品推荐

