javascript - 如果屏幕宽度大于,如何停止调整大小和加载时的点击事件?

标签 javascript

我一次又一次地面临这个问题,只是不知道如何解决。我有一个点击事件,仅当屏幕宽度小于 **576px* 并且加载页面以触发此事件时,我才会触发该事件。

但是当我将浏览器大小调整为大于 576px 时,点击事件仍然有效。

有人可以帮我解决我面临的这个常见问题吗?

提前致谢。

我的代码:

const onSearchMobile = () => {
    let screenWidth = window.innerWidth;
    let searchIcon = document.querySelector('.main-header__search--icon');
    if (screenWidth <= 576) {
        console.log('Yes lower then 576');
        searchIcon.addEventListener('click', () => {
            console.log('clicked!');
        });
    }
};

window.addEventListener('resize', onSearchMobile, false);
window.addEventListener('load', onSearchMobile);

最佳答案

只需检查事件内的宽度

const onSearchMobile = () => {
  let screenWidth = window.innerWidth;
  let searchIcon = document.querySelector('.main-header__search--icon');
  searchIcon.addEventListener('click', () => {
    if (screenWidth <= 576) {
      console.log('clicked!');
    }
  });
};

window.addEventListener('resize', onSearchMobile, false);
window.addEventListener('load', onSearchMobile);

使用MediaQueryList.onchange

let searchIcon = document.querySelector('.main-header__search--icon')
let clickListener = () => console.log('clicked!')
let mql = window.matchMedia('(max-width: 576px)')

mql.addEventListener("change", (e) => {
  if (e.matches) {
    searchIcon.addEventListener('click', clickListener)
  } else {
    searchIcon.removeEventListener('click', clickListener)
  }
})

关于javascript - 如果屏幕宽度大于,如何停止调整大小和加载时的点击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59390580/

相关文章:

javascript - Apache Web 服务器消息

javascript - 将自定义类添加到 Angular 选择的容器

javascript - 按频率对子字符串数组进行排序 - JS

javascript - 模块 'ng' 没有导出成员 'ui' 当使用 ui-router type definition for typescript

javascript - ReactJS:Redux 状态没有改变

javascript - 无法从 json 中提取键/值

javascript - 模态框打开有奇怪的效果

javascript - JavaScript 中的函数调用

javascript - collapsiblepanelextender 在较新的浏览器中没有动画

javascript - Google 脚本中的数组覆盖问题