如何用JavaScript检测元素外的点击?
大家好!我是JavaScript新手,正在编写一个下拉菜单。我需要它在用户点击菜单以外的任何地方时关闭。我尝试了很多方法,但都不太对。
以下是我当前的代码:
```javascript
const menu = document.getElementById('myMenu');
document.addEventListener('click', function(event) {
if (event.target !== menu) {
menu.style.display = 'none';
}
});
```
问题是,即使我点击菜单的内容(例如列表项或内部的按钮),菜单也会关闭。我明白event.target是点击的具体元素,而不是菜单容器本身。如何正确检查点击是否发生在元素外部(包括其所有子节点)?需要一个纯JavaScript解决方案,不使用jQuery。谢谢!
<<>>
使用
使用contains()方法
你的直觉是对的:event.target !== menu只检查菜单元素本身,而不检查其子元素。