Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在uisng JS外部单击时隐藏上下文菜单?_Javascript_Highcharts - Fatal编程技术网

Javascript 如何在uisng JS外部单击时隐藏上下文菜单?

Javascript 如何在uisng JS外部单击时隐藏上下文菜单?,javascript,highcharts,Javascript,Highcharts,我有一个上下文菜单,单击此网络图中的任何节点都会打开它。 我正在尝试使用Javascript关闭单击外部任意位置的上下文菜单 我试图使用document.onclick隐藏它,但它不起作用 有关代码片段,请参考JSFIDLE链接 单击“外部”时应关闭关联菜单 向文档添加一个单击侦听器,并尝试检查它是在容器元素内部还是外部单击的。如果在内部单击,最近的方法将返回父容器,它将为您提供容器元素,否则如果在外部单击,它将提供null。我们对null感兴趣,然后我们将隐藏上下文菜单div document

我有一个上下文菜单,单击此网络图中的任何节点都会打开它。 我正在尝试使用Javascript关闭单击外部任意位置的上下文菜单

我试图使用document.onclick隐藏它,但它不起作用

有关代码片段,请参考JSFIDLE链接

单击“外部”时应关闭关联菜单


向文档添加一个单击侦听器,并尝试检查它是在容器元素内部还是外部单击的。如果在内部单击,最近的方法将返回父容器,它将为您提供容器元素,否则如果在外部单击,它将提供null。我们对null感兴趣,然后我们将隐藏上下文菜单div

document.addEventListener('click', function(e){
  let inside = (e.target.closest('#container'));
  if(!inside){
    let contextMenu = document.getElementById('contextMenuId');
    contextMenu.setAttribute('style', 'display:none');
  }
});
如果需要设置除此之外的边界,只需将容器替换为任何合适的边界即可

如果您没有使用jQuery,那么很少有浏览器不支持最近的函数。请确保您使用pollyfill作为最近的函数

更新小提琴

注意:您的容器元素几乎占据了整个页面,很难在容器外部单击。检查您是否确实在单击容器元素外部

document.addEventListener('click', function(e){
  let inside = (e.target.closest('#container'));
  if(!inside){
    let contextMenu = document.getElementById('contextMenuId');
    contextMenu.setAttribute('style', 'display:none');
  }
});