OpenLayers 3 -地图顶部的Div不捕获点击
OpenLayers 3 - Div on top of map is not capturing click
我有一个表单/div显示在地图的顶部。我想让它是隐藏的,当有一个点击在表单/div区域之外,但不是当点击在表单/div内。
我无法检测到点击何时在div内完成。相反,在表单/div内的所有点击都被检测到在地图上完成,就好像div不存在一样。
<div id="map" class="map"><div id="popup">
//input data of form
</div> </div>
<script>
map.on('click', function(evt) {
console.log('Clicked #map');
//one method I tried from another stack overflow answer
(evt.target !== this) ? $("#popup").show() : $popup.hide();
var feature = map.forEachFeatureAtPixel(evt.pixel,
function(feature) {
return feature;
});
if (feature) {
loadInfo(feature.get('id'));
$("#popup").show();
}
});
$("popup").on('click', function(e) {
e.stopPropagation();
console.log('Clicked #popup');
});
</script>
点击#地图
点击#弹出
正如你在代码中看到的,我尝试了几种不同的方法来检测弹出框上的点击,但没有一种有效。
我正在使用openlayers3
您可以使用event . stoppropagation()来阻止当前click
事件在捕获和冒泡阶段的进一步传播:
var $map = $('#map'),
$popup = $('#popup');
$map.on('click', function(e) {
console.log('Clicked #map');
(e.target !== this) ? $popup.show() : $popup.hide();
});
$popup.on('click', function(e) {
e.stopPropagation();
console.log('Clicked #popup');
});
#map {
background-color: grey;
width: 80%;
height: 120px;
margin: auto;
padding: 40px;
}
#popup {
background-color: #000000;
color: #ffffff;
width: 60%;
margin: auto;
padding: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="map" class="map">
<div id="popup">
// input data of form
</div>
</div>
相关文章:
- 添加文字和评论功能更新Div
- 谷歌地图固定位置覆盖
- 不显示带有本地json文件数据的谷歌地图脚本
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 谷歌地图标记不会显示
- 无法在JS中显示谷歌地图
- 科尔多瓦页面类应用程序中的多个谷歌地图
- 需要帮助谷歌地图方向面板在FancyBox中显示
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 点击后隐藏潜水?(但如果Div是一面旗帜呢?)
- 在谷歌地图上获取事件的x,y坐标
- 将 DIV 插入 Google 地图图层
- 我的谷歌地图DIV位于其他所有内容的顶部-我不明白为什么
- 谷歌地图上的DIV
- OpenLayers 3 -地图顶部的Div不捕获点击
- 如何在谷歌地图InfoBox中访问Div
- 在动态生成的DIV的鼠标悬停上显示谷歌地图标记信息名称
- 我想在Div(动态创建)的innerHTML中添加地图
- 在谷歌地图信息窗口中对齐2个DIV's
- Div覆盖禁用谷歌地图功能