javascript - 如何将一个或多个变量附加到一个事件侦听器?
问题描述
我在 if 语句中有一个事件侦听器,可以让菜单滑入。
const burger = document.querySelector(".c-brgr");
if (!menuOpen) {
burger.addEventListener('click', function () {
if (!menuOpen) {
nav.classList.add("menu-is-open");
menuOpen = true;
} else {
nav.classList.remove("menu-is-open");
menuOpen = false;
}
});
}
我在 HTML 中还有一个 div,我希望在单击时也可以关闭菜单。我可以再做一个。
const closeArea = document.querySelector(".js-close-area");
if (!menuOpen) {
closeArea.addEventListener('click', function () {
if (!menuOpen) {
// as above
} else {
// "
}
});
}
这一次,我不使用汉堡,而是使用其他元素。closeArea
. 然而,这将不必要地重复代码。
有没有一种方法可以只为两者使用一个 if 语句addEventListeners
?
解决方案
是的,您可以将两者都添加到数组中,并按如下方式循环遍历它们
const burger = document.querySelector(".c-brgr");
const closeArea = document.querySelector(".js-close-area");
if (!menuOpen) {
[burger, closeArea].forEach(element => {
element.addEventListener('click', function () {
if (!menuOpen) {
// as above
} else {
// "
}
});
}
}
推荐阅读
- python - 跨两列排序,一列按绝对值
- wordpress - 古腾堡编辑器中未更新样式
- python - 局部异常因子真实世界示例
- php - PHP 7 默认异步处理请求吗?
- vue.js - vuetify 组合框获取搜索字符串值作为模糊输入
- javascript - 使用 Sequelize Create 方法时如何仅返回特定属性
- asp.net-mvc - ASP MVC 标识动态连接字符串
- jquery - 以编程方式选择多个节点的动态树不起作用
- python - 未找到带有参数 '('',)' 的 'edit_post' 的反向操作。尝试了 1 种模式:['edit_post/(?P
\\d+)/$'] - javascript - vueJS 上的全局消息(通知)调用