0

次のような単純なモーダル ボックスを開くことができます。

<div id="social" class="overlay">
  <div class="inner">
    <a class="close" href="#"><span class="icon-close"></span></a>

    CONTENT

 </div>
</div>

CSSは次のとおりです。

.overlay { 
    position: fixed; 
    top: 0; 
    left: 0; 
    width: 100%; 
    z-index: 100; 
    background: fade(@black, 75%); 
    display: none;
    z-index: 999;   
}

#social .inner {
    margin: 0 auto;
    z-index: 1000;  
    width: 380px;
}

そして、ここにJSがあります:

 $(document).ready(function(){
    $("#social").css("height", $(document).height());

    $(".social").click(function(){
        $("#social").fadeIn();
        return false;
    });

    $(".close").click(function(){
        $("#social").fadeOut();
        return false;
    });
});

クラスへのリンクをクリックすると、モーダル ボックスが閉じますclose誰かがモーダル ボックスの外側、つまりオーバーレイレイヤー ( )のどこかをクリックしたときにモーダル ボックスを閉じたいと思います。最上位レイヤー ( ) にも影響を与えずに、下位レイヤー ( ) をターゲットにする方法がわかりません。z-index:999z-index:999z-index:1000

私は jQuery についてあまり知らないので、提案を初心者向けに表現していただければ幸いです。ありがとう!:)

4

1 に答える 1

1

オーバーレイにクリック イベント ハンドラーをアタッチすることで、オーバーレイがクリックされたときにモーダル ボックスをフェードアウトできます。JSFiddle

HTML

<input type="button" class="social" value="test" />
<div id="social" class="overlay">
    <div class="inner"> 
        <a class="close" href="#">
            <span class="icon-close">X</span>
        </a>
        CONTENT
    </div>
</div>

CSS

.overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 100;
    background: rgba(0, 0, 0, 0.5);
    display: none;
    z-index: 999;
}
#social .inner {
    margin: 0 auto;
    z-index: 1000;
    width: 380px;
}

jQuery

 $(document).ready(function () {

     $("#social").css("height", $(document).height());

     $(".social").click(function () {
         $("#social").fadeIn();
         return false;
     });

     $(".close").click(function () {
         $("#social").fadeOut();
         return false;
     });


     //This is the part that handles the overlay click
     $("#social").on('click', function (e) {
         if (e.target == this) {
             $(this).fadeOut();
         }
     });
 });
于 2013-05-13T11:35:23.317 に答える