【问题标题】:How to disable click event on leaflet map only?如何仅在传单地图上禁用点击事件?
【发布时间】:2021-03-01 15:33:13
【问题描述】:

我创建了button 来打开我的传单map id 中的引导模式,如下所示,

<div id='map'> 
  <div id="bootstrapModalBtn" data-toggle="modal" data-target="#baseLayerModal">Click</div>
</div>

当我点击地图时,我添加了添加标记的功能并打开如下弹出窗口,

map.on('click', function(e) {
    const latLng = [e.latlng.lat, e.latlng.lng];
    marker = L.marker([e.latlng.lat, e.latlng.lng]).addTo(map);
    marker.bindPopup("this is popup").openPopup();
}

但是当我点击我的button 时,它会同时打开引导模式和传单弹出窗口。但我只想在用户单击button 时打开引导模式。为了阻止这个问题,我尝试了以下方法,

$(".bootstrapModalBtn").on("click", L.DomEvent.stopPropagation);

添加最后一部分后,我无法获得引导模式和传单弹出窗口。我的问题是,如何仅从 button 的地图中禁用点击事件?

PS:我也试过map.off('click')的方法。但是设置map.off('click')后无法重新激活点击事件,

$(".bootstrapModalBtn").on("click", map.off('click');

【问题讨论】:

    标签: javascript jquery leaflet


    【解决方案1】:

    好吧,看来这只是一个错字,你的 bootstrapModalBtn 元素没有被选中。

    在您的 jQuery 选择器中将 . 替换为 #id 选择器,而不是 class)。或将id="bootstrapModalBtn" 替换为class="bootstrapModalBtn"

    然后,如你所说,使用event.stopPropagation()

    $("#bootstrapModalBtn").on("click", (e) => {
        e.stopPropagation();
    
        /* open your modal here */
    });
    

    【讨论】:

    • 感谢您解决此问题。 e.preventDefault() 为我工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2016-02-19
    相关资源
    最近更新 更多