jQuery 切换 class 无响应
jQuery toggle class not responding
我正在尝试使用切换class 来构建汉堡菜单。我希望它可以通过添加 class 活动来单击以显示菜单。默认情况下,我有汉堡图标显示 none,然后添加活动 class 应该使其显示和可点击。我已经尝试了几种不同的代码,但它没有响应我想知道我做错了什么,任何建议都有帮助!
const menuToggle = document.querySelector('.menu');
$(document).ready(function() {
$('.card').on('mouseenter', function() {
$(this).find(".inner-card").toggleClass('active');
});
$('.card').on('mouseleave', function() {
$(this).find(".inner-card").toggleClass('active');
});
// #1
$('.hamburger-menu').on('click', function() {
$('.hamburger-menu').toggleClass('.active')
});
//#2
$('.hamburger-menu').onclick(function() {
$('.hamburger-menu').toggleClass('.active')
});
});
.hamburger-menu {
display: none;
}
@media only screen and (max-width: 886px) {
header {
display: flex;
justify-content: space-between;
}
.hamburger-menu {
display: inline-block;
.menu.active {
height: 100%;
width: 350px;
background: white;
z-index: 10;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<header>
<nav class="nav-links">
<a href="http://" class="nav-branding">TravelSite</a>
<form id="form">
<input type="search" class="searchbar" id="query" name="q" placeholder="Search...">
<button>Search</button>
</form>
<ul class="nav-ul">
<li><a href="http://">Destinations</a></li>
<li><a href="http://">Blog</a></li>
<li><a href="http://">About</a></li>
<li><a href="http://">Contact</a></li>
</ul>
<div class="hamburger-menu"> <img src="../static/img/burger-bar.png" alt=""></div>
</nav>
</header>
你快到了,但你瞄准了错误的项目。我对您的 HTML 进行了一些重新排列,并添加了一个 class 来包含链接,这样您就可以将其作为目标而不是 ul
。您的 CSS 中存在一些格式问题,所以我只是将媒体查询取出并清理了它,您可以将其添加回您需要的任何大小并从那里进行调整。
$('.hamburger-menu').click(function() {
$('.navItems').toggleClass('active')
});
*,
*::before,
*::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
header {
display: flex;
justify-content: space-between;
}
.hamburger-menu {
display: block;
width: 80px;
height: 80px;
margin: 0;
}
.hamburger-menu img {
display: block;
width: 80px;
height: 80px;
margin: 0;
}
.navItems {
display: none;
height: 100%;
width: 350px;
color: black;
background: white;
z-index: 10;
}
li a {
color: black;
}
.active {
display: block;
height: 100%;
width: 350px;
background: white;
z-index: 10;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<header>
<nav class="nav-links">
<a href="http://" class="nav-branding">TravelSite</a>
<form id="form">
<input type="search" class="searchbar" id="query" name="q" placeholder="Search...">
<button>Search</button>
</form>
<div class="hamburger-menu">
<img src="https://i.imgur.com/WbNu8xl.jpeg" alt="">
<div class="navItems">
<ul>
<li><a href="http://">Destinations</a></li>
<li><a href="http://">Blog</a></li>
<li><a href="http://">About</a></li>
<li><a href="http://">Contact</a></li>
</ul>
</div>
</div>
</nav>
</header>
我正在尝试使用切换class 来构建汉堡菜单。我希望它可以通过添加 class 活动来单击以显示菜单。默认情况下,我有汉堡图标显示 none,然后添加活动 class 应该使其显示和可点击。我已经尝试了几种不同的代码,但它没有响应我想知道我做错了什么,任何建议都有帮助!
const menuToggle = document.querySelector('.menu');
$(document).ready(function() {
$('.card').on('mouseenter', function() {
$(this).find(".inner-card").toggleClass('active');
});
$('.card').on('mouseleave', function() {
$(this).find(".inner-card").toggleClass('active');
});
// #1
$('.hamburger-menu').on('click', function() {
$('.hamburger-menu').toggleClass('.active')
});
//#2
$('.hamburger-menu').onclick(function() {
$('.hamburger-menu').toggleClass('.active')
});
});
.hamburger-menu {
display: none;
}
@media only screen and (max-width: 886px) {
header {
display: flex;
justify-content: space-between;
}
.hamburger-menu {
display: inline-block;
.menu.active {
height: 100%;
width: 350px;
background: white;
z-index: 10;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<header>
<nav class="nav-links">
<a href="http://" class="nav-branding">TravelSite</a>
<form id="form">
<input type="search" class="searchbar" id="query" name="q" placeholder="Search...">
<button>Search</button>
</form>
<ul class="nav-ul">
<li><a href="http://">Destinations</a></li>
<li><a href="http://">Blog</a></li>
<li><a href="http://">About</a></li>
<li><a href="http://">Contact</a></li>
</ul>
<div class="hamburger-menu"> <img src="../static/img/burger-bar.png" alt=""></div>
</nav>
</header>
你快到了,但你瞄准了错误的项目。我对您的 HTML 进行了一些重新排列,并添加了一个 class 来包含链接,这样您就可以将其作为目标而不是 ul
。您的 CSS 中存在一些格式问题,所以我只是将媒体查询取出并清理了它,您可以将其添加回您需要的任何大小并从那里进行调整。
$('.hamburger-menu').click(function() {
$('.navItems').toggleClass('active')
});
*,
*::before,
*::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
header {
display: flex;
justify-content: space-between;
}
.hamburger-menu {
display: block;
width: 80px;
height: 80px;
margin: 0;
}
.hamburger-menu img {
display: block;
width: 80px;
height: 80px;
margin: 0;
}
.navItems {
display: none;
height: 100%;
width: 350px;
color: black;
background: white;
z-index: 10;
}
li a {
color: black;
}
.active {
display: block;
height: 100%;
width: 350px;
background: white;
z-index: 10;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<header>
<nav class="nav-links">
<a href="http://" class="nav-branding">TravelSite</a>
<form id="form">
<input type="search" class="searchbar" id="query" name="q" placeholder="Search...">
<button>Search</button>
</form>
<div class="hamburger-menu">
<img src="https://i.imgur.com/WbNu8xl.jpeg" alt="">
<div class="navItems">
<ul>
<li><a href="http://">Destinations</a></li>
<li><a href="http://">Blog</a></li>
<li><a href="http://">About</a></li>
<li><a href="http://">Contact</a></li>
</ul>
</div>
</div>
</nav>
</header>