【发布时间】:2019-10-03 17:41:06
【问题描述】:
当动画发生通过 jQuery 时,我将如何将函数传递给“按钮”?
JavaScript 允许我选择 .nav-items 类下的所有数据,并使用 forEach 方法遍历这些数据和 nav 标签,最终将其传递给名为 .navbar-toggle-show 的类
navbar-toggle-show的类主要在屏幕在max-width:768px时使用display:flex
在 jQuery 方面是我发现最多问题的地方,因为虽然我可以淡入/淡出图标,但允许我切换内容的功能并不完全有效。我想做的是将切换功能传递给“新”显示的按钮。
$("document").ready(()=>{
$(".svg-nav-toggle").on('click', ()=>{
$(".svg-nav-toggle").fadeOut("slow");
$(".svg-nav-toggle-on").fadeIn("slow");
});
$(".svg-nav-toggle-on").on('click', ()=>{
$(".svg-nav-toggle-on").fadeOut("slow");
$(".svg-nav-toggle").fadeIn();
});
});
body {
background-color: #afafaf
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="navbar">
<div class="nav-brand">
<p>Blog Personal</p>
</div>
<div class="svg-nav-toggle hide"> <!-- START OF SVG ICONS -->
<svg id="Capa_1" data-name="Capa 1" xmlns="http://www.w3.org/2000/svg" width="20" height="40" viewBox="0 0 10 20">
<defs>
<style>
.cls-1 {
opacity: 1;
}
.cls-2 {
fill: rgb(255, 255, 255);
}
</style>
</defs>
<title>Off</title>
<g class="cls-1">
<path class="cls-2" d="M7.4,1A1.6,1.6,0,0,1,9,2.6V17.4A1.6,1.6,0,0,1,7.4,19H2.6A1.6,1.6,0,0,1,1,17.4V2.6A1.6,1.6,0,0,1,2.6,1H7.4m0-1H2.6A2.6,2.6,0,0,0,0,2.6V17.4A2.6,2.6,0,0,0,2.6,20H7.4A2.6,2.6,0,0,0,10,17.4V2.6A2.6,2.6,0,0,0,7.4,0Z" transform="translate(0)"/>
</g>
</svg>
</div>
<div class="svg-nav-toggle-on hide">
<svg id="Capa_1" data-name="Capa 1" xmlns="http://www.w3.org/2000/svg" width="20" height="40" viewBox="0 0 16.1 16.1">
<title>On</title>
<circle cx="8.1" cy="8.1" r="7.6"
style="fill: white ;stroke: #fff;stroke-miterlimit: 10"/>
</svg>
</div> <!-- END OF SVG ICONS -->
<nav class="nav-items"> <!-- START OF NAVBAR -->
<div class="nav-link">
<a href="#">Acerca</a>
</div>
<div class="nav-link">
<a href="#">Portafolio</a>
</div>
</nav>
<nav class="nav-items nav-items-right">
<div class="nav-link">
<a href="#">Descargas</a>
</div>
<div class="nav-link">
<a href="#">Contacto</a>
</div>
</nav> <!-- END OF NAVBAR -->
</div>
JavaScript
function classToggle() {
const navs = document.querySelectorAll('.nav-items')
navs.forEach(nav => nav.classList.toggle('navbar-toggle-show'));
}
document.querySelector('.hide').addEventListener('click', classToggle);
【问题讨论】:
-
欢迎来到 SO!您的问题没有收到预期的回复,可能是因为这里有很多要阅读的内容。 MCVE 将专注于似乎是 jQuery 和 Vanilla JS 位组合的要点。我有两个问题:您的
classToggle函数 not 是否有理由用 jQuery 编写? “新”按钮是什么意思?按钮从一开始就在那里。他们只会改变他们的知名度。