0
我有这样的jQuery代码被触发移动导航,这是两个div(左和标识的右侧,但标志是隐藏的):循环通过getElementsByClassName方法
$(document).ready(function() {
$('.menu').on('click', function(e){
$('.main-nav').toggleClass('active');
e.preventDefault();
});
});
我尝试重写这vannila JS通过这样的:
document.addEventListener('DOMContentLoaded', function() {
var toggleNav = document.getElementsByClassName('main-nav');
function myFunction() {
for (var i=0; i<toggleNav.length; i++) {
toggleNav[i].classList.toggle('active');
console.log('myFunction() fired...');
return false;
}
};
var x = document.getElementsByClassName('menu')[0];
x.addEventListener('click', myFunction);
});
但这仅仅只在切换循环中的第一资产净值,这是left-nav
,就像如果我在过去使用var toggleNav = document.getElementsByClassName('main-nav')[0];
。什么地方出了错?
HTML代码:
<div class="toggle-mobile-nav">
<a href="#" class="menu">Menu <span>≡</span></a>
</div>
<div class="navigation">
<nav class="main-nav left-nav">
...
</nav>
<div class="logo logo-nav">
<a href="/"><img class="logo-svg" src="..." alt="" /></a>
</div>
<nav class="main-nav right-nav">
...
</nav>
</div>
还有其他各种问题,随时从我现在删除的答案复制任何相关的东西。 –
'var x = document.getElementsByClassName('menu')[0];'有意返回第一个元素。稍后,该按钮将具有更多独特的类名,这在我的代码中再也不会出现。我认为这是比循环更快的请求? – Lanti
@TJ OP可以从我们的2个答案中获益。我认为我在这里解释的是OP的主要问题。好的,我会解释你在这里回答你说的话。 –