首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭时弹出背景不会隐藏

关闭时弹出背景不会隐藏
EN

Stack Overflow用户
提问于 2013-07-16 11:02:12
回答 2查看 1.2K关注 0票数 1

我创建了一个弹出窗口,然后将其移到最后一个域。现在,背景覆盖(#overlay-back)在通过角落的'X‘(.close-image)关闭时不会隐藏,但当按ESC时就会隐藏。我错过了什么?

以下是现场直播网站:http://www.nominee-services.co.uk/

JS :

代码语言:javascript
复制
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
    $(document).ready(function () {
        $('#overlay-back').fadeIn(800, function () {
            $('#popup').show();
        });

        $(".close-image").on('click', function () {
            $('#popup').hide()
        });
    });
    $(".close-image").on('click', function () {
        $('#overlay-back').hide();
    });
    $(document).on('keydown', function (e) {
        if (e.keyCode === 27) { // ESC
            $('#popup').hide();
        }
    });
    $(document).on('keydown', function (e) {
        if (e.keyCode === 27) { // ESC
            $('#overlay-back').hide();
        }
    });
    $(document).on('click', function (e) {
        if ($(e.target).closest('#popup').length === 0) {
            $('#overlay-back').hide();
        }
    });
    $(document).on('click', function (e) {
        if ($(e.target).closest('#popup').length === 0) {
            $('#popup').hide();
        }
    });
</script>

CSS :

代码语言:javascript
复制
#popup {
    position: absolute;
    display: hidden;
    top: 50%;
    left: 50%;
    width: 960px;
    height: 98px;
    margin-top: -194px;
    margin-left: -480px;
    background-color: #fff;
    z-index: 20;
    padding: 5px;
}
#overlay-back {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: #000;
    opacity: 0.7;
    filter: alpha(opacity=60);
    z-index: 19;
    display: none;
}
.close-image {
    display: block;
    float: right;
    cursor: pointer;
    z-index: 21;
    position: absolute;
    right: 8px;
    top: 8px;
}

HTML :

代码语言:javascript
复制
<div id="overlay-back"></div>
<div id="popup">
    <img class="close-image" src="images/closebtn.png" /><span><img src="images/load_sign.png" width="960" height="398" /></span>
</div>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-16 11:09:12

您必须将单击事件放在document.ready()函数中。

代码语言:javascript
复制
$(".close-image").on('click', function() {
       $('#overlay-back').hide();
});
票数 1
EN

Stack Overflow用户

发布于 2013-07-16 11:11:34

你有什么理由把你的活动设置两次?

代码语言:javascript
复制
     $( document ).on( 'click', function ( e ) {
        if ( $( e.target ).closest('#popup').length === 0 ) {
        $('#overlay-back').hide();
}
});
     $( document ).on( 'click', function ( e ) {
       if ( $( e.target ).closest('#popup').length === 0 ) {
       $('#popup').hide();
}
});

只要把它改成

代码语言:javascript
复制
       $( document ).on( 'click', function ( e ) {
       if ( $( e.target ).closest('#popup').length === 0 ) {
       $('#popup').hide();
       $('#overlay-back').hide();
}
});

另外,如果您有一个事件(例如,window.load )并将其设置了两次,那么您将覆盖前面关联的函数。不确定它是否适用于所有事件,但这可能是你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17674822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档