在外面点击时隐藏div

时间:2014-01-14 18:02:20

标签: javascript jquery html css

我有一个弹出窗口小部件的以下HTML:

<div id="popup">
   <div class="popup-wrapper">
      <div class="content">
         <h1>TEST</h1>
      </div>
   </div>
</div>

使用CSS:它显示为NONE:

#popup {
    display: none;
    overflow: auto;
}

    #popup .popup-wrapper { 
        background-color: #0D1014; 
        background-color: rgba(13,16,20,0.95); 
        height: 100%; width: 100%;
        position: fixed; top: 0; left: 0; right: 0; bottom 0; 
    }

    #popup .content {
        background-color: #E8F0F3;
        border: 1px solid #FFFFFF;

        width: 300px;
        position: fixed;
        top: 50%; left: 50%;
        margin-left: -150px;
        margin-top: -140px;
        padding: 20px;
        overflow: hidden;

        border-radius: 5px 5px 5px 5px;
        -moz-border-radius: 5px 5px 5px 5px;
        -webkit-border-radius: 5px 5px 5px 5px;

        -webkit-box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.5);
        -moz-box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.5);
        box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.5);
    }

    .no-scroll {
        overflow: hidden;
        height: 100%; width: 100%;
    }

使用JavaScript点击链接时会显示弹出窗口:

$(".popup").on('click', function(e) {
        $("#popup").fadeIn(200);
        $("body").addClass("no-scroll");
    });

问题是,如何仅在点击#popup而不是.popup-wrapper时隐藏.content

4 个答案:

答案 0 :(得分:1)

20分钟前我自己遇到过这个问题 代码:

$("#popup").on('click', function(e) {
    if ($(e.target).closest(".content" /*or any other selector here*/).length > 0) {return false;}
    $("#popup").fadeOut(200);
    $("body").addClass("no-scroll");
});

答案 1 :(得分:0)

您可以通过添加以下内容阻止.content$('.content').click(function(e){ e.stopPropagation() }) $('#popup').click(function(){ $(this).fadeOut() }) 的任何点击:

{{1}}

答案 2 :(得分:0)

使用:not伪选择器过滤掉.content DIV:

$(".popup-wrapper:not(.content)").click(...)

答案 3 :(得分:0)

尝试以下代码:

jQuery('.popup-wrapper').click(function(){
   jQuery('#popup').hide();
});