javascript - 将 Jquery 转换为 VanillaJS

标签 javascript jquery

我不知道如何将此代码从 Jquery 重写为 VanillaJS。累了几天,一直没有找到解决办法。

我想我已经搜索了整个 Internet 但一无所获...... 有人可以给我一个“准备好的”代码吗?请再帮我一次。

const menuIconEl = $('.menu-icon');
const sidenavEl = $('.sidenav');
const sidenavCloseEl = $('.sidenav-close-icon');

function toggleClassName(el, className) {
  if (el.hasClass(className)) {
    el.removeClass(className);
  } else {
    el.addClass(className);
  }
}
menuIconEl.on('click', function() {
  toggleClassName(sidenavEl, 'active');
});
sidenavCloseEl.on('click', function() {
  toggleClassName(sidenavEl, 'active');
});

使用 Jquery 后的整个代码可以正常工作,但每次尝试将其转换为 vanillaJS 后,它就不再有效了。

最佳答案

选择东西时,可以使用

document.querySelector( query:String ) // returns an HTMLElement or null
document.querySelectorAll( query:String ) // returns a NodeList you can iterate over

对于切换类,您可以使用 classList 及其方法来控制 HTMLElements 上的类:

HTMLElement.classList.toggle( className:String, forced:Boolean|Null )

要添加事件监听器,只需使用 addEventListener 而不是 on

这会将您的代码变成这样:

const menuIconEl = document.querySelector('.menu-icon');
const sidenavEl = document.querySelector('.sidenav');
const sidenavCloseEl = document.querySelector('.sidenav-close-icon');
const onclick = e => sidenavEl.classList.toggle( 'active' );

menuIconEl.addEventListener( 'click', onclick );
sidenavCloseEl.addEventListener( 'click', onclick );

就是这样!

关于javascript - 将 Jquery 转换为 VanillaJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58063056/

相关文章:

javascript - 尝试使用 Jquery 缓和一个 div

javascript - 在 vs 2008 firefox 3.5+ 中调试

javascript - react 选择值为 null

javascript - jQuery:html 元素的内容被解释为字符串,而不是整数

javascript - 为什么这个 Bootstrap 2.3.2 下拉菜单不起作用?

javascript - 如何访问不同 Controller 的功能? - JavaScript MVC

javascript - Jquery .each() 无限循环

javascript - 使用 Symfony 2 从 js 调用 css

javascript - 单击查找数据属性 - Jquery

javascript - Bootstrap4 无法识别 <button>