Javascript 停止拖动事件的传播

Javascript 停止拖动事件的传播,javascript,events,leaflet,Javascript,Events,Leaflet,如何停止拖动事件的传播 当前我的当前代码如下所示: map.on('drag', function(e) { e.originalEvent.preventDefault(); e.originalEvent.stopPropagation(); console.log('event'); return false; }); 事件被正确触发,因为我可以在控制台中看到日志,但尽管调用了preventDefault和stopPropagation,地图仍被拖动,有什

如何停止拖动事件的传播

当前我的当前代码如下所示:

map.on('drag', function(e) {
    e.originalEvent.preventDefault();
    e.originalEvent.stopPropagation();
    console.log('event');
    return false;
});

事件被正确触发,因为我可以在控制台中看到日志,但尽管调用了
preventDefault
stopPropagation
,地图仍被拖动,有什么想法吗?

编辑以反映评论中的建议

停止拖动事件上的传播无效,即

map.on('drag', function(e) {
     $(this).dragging.disable();
     return false;
});
OP试图阻止在地图上拖动,除非是用两个手指拖动。为了实现这一点,建议使用透明div覆盖地图,然后在触发双指手势事件时隐藏div。类似于

HTML


您尝试过e.preventDefault()和e.stopPropagation()吗?是的,它抛出错误:TypeError:e.preventDefault不是函数。好的,总体问题是什么?拖动事件正在冒泡到正在拖动的另一个元素?现在还不清楚你想实现什么我的目标是禁用移动设备上的拖动功能,但我还想向用户显示一条消息,告诉他在尝试拖动地图时使用两根手指。当我创建地图时,我试图将
拖动
选项设置为
false
,但它阻止了拖动事件被触发。这可能有帮助吗?演示如何设置地图选项-编辑刚刚看到您正在编辑(无需担心!)谢谢,我已经尝试过了,问题是它不会将拖动事件传播到页面。当用户拖动地图时,它应该在页面上滚动。啊,我明白你的意思了,就在我的头顶上-你可以在地图上添加一个覆盖层,这样就不需要拖动,允许你保持页面滚动,然后在检测到两个手指时隐藏?这是个好主意,如果我在周一之前没有另一个anwser,我接受你的建议。:)我不想成为这里的坏人,但请不要仅仅出于好意而接受一个不起作用的答案,有人可能会以同样的问题结束,并浪费时间尝试一些没有用的东西。如果您因为评论而接受它,请编辑它以包含解决方案。如果评论中的解决方案有效,我打算修改答案。不过,改变它还没有意义
<div class='map-container'>
    <div class='overlay' style='width:100%; hwight:100%; background-color:transparent;'>
    </div>
    <div class='map'>
    </div>
</div>
$('.overlay').on('touchstart', function (e) {
if (e.touches.length > 1)
    $(this).hide();
});

$('.overlay').on('touchend', function (e){
    $(this).show();
});