【发布时间】:2019-06-23 20:31:46
【问题描述】:
我想在调整浏览器大小的同时移除特定屏幕尺寸上的点击事件监听器。
问题是下面的代码在我刷新页面的地方有效,并且需要的结果就在那里。但是,在调整浏览器大小时,它会保持在低于所需宽度时可点击或超过所需宽度时不可点击的状态。
let viewPort = window.innerWidth || document.documentElement.clientWidth;
let dropToggle = document.querySelectorAll(".someparent");
let dropMenu = document.querySelectorAll(".somechild");
for (let i = 0; i < dropToggle.length; i++) {
dropToggle[i].addEventListener('click', function a(event) {
if (viewPort < 786) {
dropMenu[i].classList.toggle("drop");
if (event.dropToggle == 2);
event.stopPropagation();
}
else {
dropToggle.removeEventListener('click', a);
/*update*/
dropMenu[i].classList.remove("drop");
}
/*update*/
window.addEventListener("resize", function() {
viewPort = window.innerWidth || document.documentElement.clientWidth;
}, true);
});
}
所以基本上,我需要在调整浏览器大小而不刷新页面的情况下启动该功能。任何帮助将不胜感激。
EDIT 使用部分解决方案更新了代码。
新问题: 切换 classList.toggle “drop”如果未在较小宽度上关闭,则保持打开状态。将 classList.remove 添加到 else 条件中的“drop”也不起作用,这实际上会在调整大小时完全删除该函数。有没有办法在调整大小时重置 classList.toggle?
【问题讨论】:
标签: javascript