[英]How to toggle class when clicked outside the element Jquery
因此,第一段代码打开和关闭.main导航,同时将阴影叠加层覆盖在页面上。 但是我想完成的是仅在打开菜单且覆盖层位于页面上方的情况下,在导航外部的任何位置单击以执行相同的操作(关闭菜单并移除覆盖层)-如果应用了这两个类。
小提琴: 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');
}
});
您永远不会将open
类设置为.nav-toggle
元素,因此在.nav-toggle
$(document).click()
时,其中的if语句始终产生false。 更改为:
$(document).ready(function(){
$('.nav-toggle').on('click', function(){
$('.main-navigation').toggleClass('open');
$('#ovlay').toggleClass('overlay');
return false;
});
});
$(document).click(function(event){
if($('.main-navigation').hasClass('open') && $(event.target).closest(".main-navigation").length == 0) {
$('.main-navigation').toggleClass('open');
$('#ovlay').toggleClass('overlay');
}
});
检查这个小提琴: https : //jsfiddle.net/1n78d9jq/
请注意document.click中添加的支票,当单击主菜单本身时,它会阻止关闭。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.