我的事件侦听器函数i
根据variable的长度打开弹出窗口的数量,该变量codedCities
是动态变化的。此功能运行良好,但问题是删除了弹出窗口。开启,'mouseout'
我希望所有打开的弹出窗口'mouseover'
都关闭。
item.addEventListener('mouseover', function() {
for (var i in codedCities) {
var popupB = new mapboxgl.Popup({
offset: [0, -10],
closeButton: false,
closeOnClick: true,
anchor: 'top-left'
});
popupB.setLngLat(codedCities[i].geometry.coordinates)
.setHTML('<div>' + codedCities[i].properties.city + '</div>')
.addTo(map);
}
});
使用Mapbox GL,mapboxgl.Popup
将为每个功能创建一个新实例,这意味着必须删除相同数量的弹出窗口。到目前为止,我已经尝试过:
item.addEventListener('mouseout', function() {
if (popupB){
popupB.remove();
} else {
console.log("no more popups!")
}
});
但这是行不通的,因为这popupB
是在先前的函数中定义的局部变量。然后,我尝试popupB
在上一个函数中使用定义为全局变量,window.popupB
但是仅删除了一个实例popupB,而不是全部删除。然后,我尝试在弹出式变量名称中添加数字[i],并使用window["popup" + i] = new mapboxgl.Popup
item.addEventListener('mouseout', function() {
var step;
for (step = 0; step < codedCities.length ; step++) {
window["popup" + step].remove();
}
});
但这什么也没显示。我想知道是否有解决此问题的已知方法。
如何在mouseover
函数中定义和创建弹出窗口,然后在函数中删除那些完全相同的弹出窗口mouseout
?
有没有一种方法可以mouseout
在mouseover
功能中包含我想要的内容?
您可以在弹出窗口和mouseout上添加一个通用的CSS类,只需将目标对象与该CSS类并关闭即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句