コードの最初のブロックが開き、同時に.main-navigationを閉じ、同時に影のオーバーレイをページに重ねます。しかし、私が達成したいのは、ナビゲーション外のどこかをクリックして、メニューが開いてオーバーレイがページ上にある場合にのみ(メニューを閉じてオーバーレイを削除する)、同じアクションを実行することです。要素の外側をクリックしたときにクラスを切り替える方法Jquery
フィドル:常にfalseをもたらしif文、その中に$(document).click()
火災、しばらくしてhttps://jsfiddle.net/bfgb951w/
<header id="ovlay">
<span class="nav-toggle eq">≡</span>
<nav class="main-navigation">
<span class="nav-toggle">×</span>
<ul class="menu">
<li><a href="#about" class="slide-section">About</a></li>
<li><a href="#works" class="slide-section">Works and stuff</a></li>
<li><a href="#contact" class="slide-section">Contact</a></li>
</ul>
</nav>
</header>
$(document).ready(function(){
$('.nav-toggle').on('click', function(){
$('.main-navigation').toggleClass('open');
$('#ovlay').toggleClass('overlay');
});
});
$(document).click(function(){
if($('.nav-toggle').hasClass('open')) {
$('.main-navigation').toggleClass('open');
$('#ovlay').toggleClass('overlay');
}
});
問題を示す実例を提供してください。 – Dekel
[要素外のクリックを検出する方法]の可能な複製?(http://stackoverflow.com/questions/152975/how-to-detect-a-click-outside-an-element) – Vasis
質問がありましたらまあ、あなたはぼかしやフォーカスのようなイベントを使うことができます。それは働くだろうか? –