Javascript 传单Mouseout呼吁举行MouseOver活动
我有一个传单地图,我在其中动态添加标记 除了单击标记外,我还想在鼠标悬停在标记上方时调用该标记的弹出窗口 我的代码是:Javascript 传单Mouseout呼吁举行MouseOver活动,javascript,jquery,css,popup,leaflet,Javascript,Jquery,Css,Popup,Leaflet,我有一个传单地图,我在其中动态添加标记 除了单击标记外,我还想在鼠标悬停在标记上方时调用该标记的弹出窗口 我的代码是: function makeMarker(){ var Marker = L.marker... Marker.on('mouseover', function(){Marker.bindPopup('HI').openPopup();}); Marker.on('mouseout', function(){Marker.closePopup();}); }
function makeMarker(){
var Marker = L.marker...
Marker.on('mouseover', function(){Marker.bindPopup('HI').openPopup();});
Marker.on('mouseout', function(){Marker.closePopup();});
}
如果我注释掉mouseout行,则会出现弹出窗口,但我必须单击elswhere关闭它。
问题是当我把鼠标放在鼠标外的时候,当光标停留在标记上时会有点闪烁,什么都没有显示。我认为弹出窗口正在打开,但很快就关闭了,这就是光标闪烁的原因,但我不知道如何解决这个问题。弹出窗口实际上是在光标下面加载鼠标,并从标记中“窃取”鼠标,触发Marker.mouseout()事件,这会导致弹出窗口关闭并重新触发标记。mouseover()事件循环继续,这就是为什么你会看到“闪烁” 我已经看到这种情况的发生取决于缩放级别(通常是在向右缩小时) 尝试在弹出选项中添加偏移量,以使其不碍事:
function makeMarker(){
var Marker = L.marker...
Marker.on('mouseover', function(){Marker.bindPopup('HI', {'offset': L.point(0,-50)}).openPopup();});
Marker.on('mouseout', function(){Marker.closePopup();});
}
我知道这是一个旧的线程,但我刚刚遇到这个问题,我想我可以分享我的解决方案。我没有抵消弹出窗口,而是通过设置以下内容防止弹出窗口使用CSS窃取鼠标事件:
.my-popup {pointer-events: none;}
并将我的弹出窗口类名分配给弹出窗口:
Marker.on('mouseover', function () {Marker.bindPopup('HI', {className: 'my-popup'}).openPopup();})
我希望这对某人有所帮助:)我最近也遇到了这个问题。如果这有助于任何人: 从手册1.0开始,您可以使用L.工具提示,而不是带有鼠标悬停或其他鼠标相关事件的弹出窗口。我发现它比创建弹出窗口更加流畅,并且使用的代码更少,尤其是当您在悬停状态下打开弹出窗口时。在您的情况下,它可能看起来像:
function makeMarker(){
var Marker = L.marker...
Marker.bindTooltip('HI').openPopup();
}
如果你想让它保持打开状态,你可以使用布尔标志
在我的例子中,我不需要在单击时打开弹出窗口(除了悬停),所以这可能会有点复杂。然而,L.工具提示已经被广泛使用,还有其他一些SO问题可以解决这个问题。通过注释掉“mouseout”事件,听起来你有了想要的行为。问题是什么?对不起,当我说它工作正常时,我记下了一个混合的想法。我的意思是,在悬停时,弹出窗口显示良好,但我必须关闭它或单击地图中的其他位置,而不是从标记中删除鼠标。问题是当鼠标在标记上时如何保持显示弹出窗口,以及当我从标记上移除鼠标时如何关闭弹出窗口。这很好地工作了。如果有人感兴趣,默认偏移量为(0,6)。我可以确认,这也适用于我。感激地,经过多次尝试、错误和搜索方式,找到了比移动弹出窗口更好的解决方案。这非常优雅