javascript - 如何通过单击元素外部来关闭元素?

标签 javascript

我当前正在尝试在其样式与“display = none”不同时关闭该元素。 我在控制台中遇到错误,告诉我该列表。 some 不是函数,所以我可能不太理解“some”方法。

有关我想要的内容的更多信息: 鉴于我有 3 个列表(在列表中),当我单击它或其元素之外时,我想关闭所有列表)

提前致谢

const lists = document.querySelectorAll(".list");

function closeList() {
    document.addEventListener("click", () => {
        if(lists.some((list) => list.style.display != "none")) {
            return lists.style.display = none;
        } else return;
    });
};

最佳答案

您可以使用Node.contains()检查是否 Event.target是元素的后代,如果不是,则运行回调:

function onClickOutside(ele, cb) {
  document.addEventListener('click', event => {
    if (!ele.contains(event.target)) cb();
  });
};

// Using
onClickOutside('#list', () => console.log('Hi!'));
// Will log 'Hi!' whenever the user clicks outside of #list

关于javascript - 如何通过单击元素外部来关闭元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72684103/

相关文章:

javascript - Angular 4专注于向下箭头上的元素并滚动

javascript - Node js 没有正确返回函数的值

javascript - 在图片上方显示文字

javascript - 图像放大 onmouseover

javascript - React 无状态组件中如何使用 ES6 map 函数

javascript - 覆盖 JQuery 之前的回调函数

javascript - 使用 lodash 从 Angular 8 的列表中删除重复的字符串(忽略大小写)

javascript - 如何阻止 Chrome 和 Firefox 按字母顺序按键对 sessionStorage 进行排序?

javascript chart.js data.addRow 不从 json 中读取数字

javascript - Chrome 正在破坏我在触摸屏上的网络应用程序设计