停止在传单中传播“点击”事件
Stop propagation of 'click' event in Leaflet
在我们的一个项目中,我们将Leaflet
与Leaflet.markercluster
插件一起使用。浏览Leaflet
的来源,我发现它会_collapse()
功能附加到地图的click
事件中,因此每当我单击地图时,它都会收缩先前扩展的集群。
现在,我想禁用此行为。如果集群已扩展,那么我只想取消选择click
事件上的所有标记(并且不要收缩集群本身)。这是我的代码片段:
map.on('click', function(e) {
scope.deselectAllMarkers();
});
我尝试在此单行回调的末尾添加以下行,以停止click
事件的传播:
scope.L.DomEvent.stopPropagation(e);
scope.L.DomEvent.preventDefault(e);
scope.L.DomEvent.stop(e);
scope.L.DomEvent.stopPropagation(e.originalEvent);
scope.L.DomEvent.preventDefault(e.originalEvent);
scope.L.DomEvent.stop(e.originalEvent);
而且它们都不起作用。每当我单击地图时,隐藏在Leaflet
源中的默认侦听器都会保持其调用。我错过了什么吗?
这个答案已经很晚了,但如果有人对解决方案感兴趣,这就是我解决它的方法。
下面的代码片段是将函数绑定到 click
事件的示例。
map.on('click', doSomething);
实际上,在检查了传单的API和一些极客调试之后,似乎事件返回了一个对象,而不是事件本身。事件本身包装到返回对象内的字段中。
var doSomething = function(map) {
// stop propagation
map.originalEvent.preventDefault();
};
使用上面的代码片段时,事件冒泡已停止,这是我想要的,也可能是您想要的。
我知道这个答案是很晚的事件,但就像在jquery中一样,你可以使用.off
map.on('click', doSomething);
map.off('click');
它适用于任何传单活动。
我用它来'zoomend'
事件只触发一次。
map.on('moveend', function(e){
console.log("any code");
map.off('moveend');
});
这个对我有用...
var div = L.DomUtil.get('div_id');
if (!L.Browser.touch) {
L.DomEvent.disableClickPropagation(div);
L.DomEvent.on(div, 'mousewheel', L.DomEvent.stopPropagation);
} else {
L.DomEvent.on(div, 'click', L.DomEvent.stopPropagation);
}
感谢 https://gis.stackexchange.com/questions/104507/disable-panning-dragging-on-leaflet-map-for-div-within-map
不能重写事件处理程序中的事件传播。您需要在页面加载后使用内置的传单帮助程序,如下所示:
$('.element').each (i,el)->
L.DomEvent.disableClickPropagation(el);
据我所知,我通过手动删除调用_collapse()
方法的默认click
处理程序解决了这个问题。肮脏,但它做到了。
你有这样的用法event.stopPropagation()
map.on('click', function(e) { //don't forget to pass this 'e' event parameter
e.preventDefault();
scope.deselectAllMarkers();
e.stopPropagation();
return false;
});
尝试任何这个
1. event.stopPropagation()
2. event.preventDefault()
3. return false
- 分派点击事件并保留击键修饰符
- 对iPad上的点击事件反应缓慢
- 当我点击jsf中的primefaces命令按钮时,如何获得点击事件
- 在javascript点击事件中调用django-urls
- 为什么我的点击事件没有使用 react js 触发
- Jquery.点击事件不'更改事件后无法工作
- 谷歌地图动态创建的标记点击事件使用相同的标记
- 如何在所有ng点击事件AngularJS上启动一个方法
- Javascript点击事件回调不起作用
- Jquery点击事件必须点击两次
- 无法在java脚本中调用图像的点击事件函数
- 将谷歌地图点击事件中的LatLng传递到rails控制器
- Html按钮点击事件未触发单选按钮
- 如何在Ol3弹出窗口中添加用javascript创建的按钮上的点击事件
- JavaScript:点击事件中对象的值
- 如何在 JavaScript 代码中调试点击事件处理
- 如何在tinymce编辑器中将点击事件绑定到html标签
- 如何在触发点击事件后执行警报
- OnsenUI中的ng点击事件不会在Android模拟器上触发
- jquery点击事件不会在iPhone中的按钮元素上触发