2016-09-07 31 views
0

私はCSSでモーダルウィンドウを構築しています。モーダルは、その外側をクリックすることで閉じることができます。モーダルの外側をクリックしてモーダルを閉じる

私の解決策は、イベントリスナーがページに別々に追加されたときにモーダルを閉じることです。しかし、彼らは一緒に働かない。両方のリスナーがページに追加されると、モーダルは開かれません。

どうすれば一緒に動作させることができますか?

HTML

<a href="#openModal" id="modal-window" class="event test"> 
    <div class="shorten-long-text test"> 
    </div> 
</a> 

<div id="openModal" class="modalDialog Dialog1"> 
    <div class="myModal"> 
    <div class="modal-header"> 
    </div> 
    <div class="modal-body row"> 
     <div class="col-xs-6" > 
     </div> 
    </div> 
    <div class="modal-footer uppercase color-main"> 
     <a href="#close" title="Close"></a> 
    </div> 
    </div> 
</div> 

JS

$(window).click(function(ev) { 
    if($(ev.target).attr('class') != ".Dialog1") { 
     $(".Dialog1").removeClass('isOpen'); 
     $(".Dialog1").addClass('isClosed'); 
    } 
}); 

$(".test").click(function() { 
    $(".Dialog1").removeClass('isClosed'); 
    $(".Dialog1").addClass('isOpen'); 
}); 
+0

"それは一緒に働いていません"と定義してください。あなたがモーダルを開いた状態と閉じた状態にする必要がある場合は、ハードウェアを更新する必要があります。 – Teemu

+0

これは、私がテストを開いたり、別のものを動作させたりすると意味します。もし私が両方のコードを持っていればうまくいきません。 – CodingMouse123

+1

'.test'クリッカーの' ev.stopPropagation() 'はイベントが' window'にバブルするのを防ぐでしょう... – Teemu

答えて

1

使用toggleClass() HTML:

<div id="openModal" class="modalDialog isClosed Dialog1"> 

JS:

$(window).click(function(ev) { 
if(!$(ev.target).is('.Dialog1,.test') $(".Dialog1").toggleClass('isClosed isOpen'); 
}          
}); 

$(".test").click(function() { 
$(".Dialog1").toggleClass('isClosed isOpen'); 
}); 
関連する問題