jquery 关闭外部和内部点击的叠加?

标签 jquery click overlay

我对某些事情感到困惑,认为这里有人可能有洞察力。

我已经构建了一个简单的叠加层,但它没有按预期工作。 这是CSS:

    #overlayOuter {
        display: none;
        position: absolute;
        height: 100%;
        width: 100%;
        background: #000;
        z-index: 100;
        }
    #overlayInner {
        position: absolute;
        top: 100px;
        left: 200px;
        width: 600px;
        height: 400px;
        z-index: 101;
        }

html 很简单:

    Blahblahblah!
    <a href="#" onclick="$('#overlayOuter').show();return false;">show overlay</a>
    <div id="overlayOuter">
        <div id="overlayInner">
            Oyeah? Blahblah!
        </div>
    </div>

然后,当有人单击“overlayOuter”时,我希望 jquery 关闭叠加层,但不单击“overlayInner”框(这样我可以包含表单等)。

我期望工作的第一个 jquery 是......

    $('#overlayOuter').click(function() {
        $('#overlayOuter').fadeOut('fast');
    });

...它可以工作,但奇怪的是在单击overlayInner时也会关闭!任何表格等现在都没用了!

以下确实按预期工作...

    $('#overlayOuter').click(function(e) {
        if ($(e.target).parents('#overlayInner').length==0) {
            $('#overlayOuter').fadeOut('fast');
        }
    });

...但是WTF!!第一个不应该起作用吗? z-index 是否足以遮盖overlayInner 与overlayOuter 分开?

最佳答案

您正在嵌套元素,因此当您单击内部 div 时,您仍然在单击外部。

你需要像这样将它们分开:

<div id="overlayOuter">
</div>
<div id="overlayInner">
</div>

这样的布局不存在问题,因为您确实将位置设置为绝对

这是 Stack 101s 最初构建的更新后的 jfiddle http://jsfiddle.net/Dapuc/3/

关于jquery 关闭外部和内部点击的叠加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6841344/

相关文章:

css - 图像上的响应式文本叠加

android - 我可以更改 map 叠加层中的点在 map 上绘制的顺序吗

javascript - JQuery .toggleClass() 一次有两个类?

java - 在 Android Activity 中添加计数器

Javascript 复选框 onclick/onchange

java - 为什么我可以点击隐藏的 JLabel?

r - 如何在R或ArcGIS中处理多边形shapefile中的“孤立孔”?

javascript - JQuery/GSAP - 彼此并行移动多个元素

jquery - 为什么我不能选择整个表?

javascript - jQuery:取消选择元素中的选项