Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传单Mouseout呼吁举行MouseOver活动_Javascript_Jquery_Css_Popup_Leaflet - Fatal编程技术网

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)。我可以确认,这也适用于我。感激地,经过多次尝试、错误和搜索方式,找到了比移动弹出窗口更好的解决方案。这非常优雅