Javascript 删除在其他事件侦听器函数中定义的弹出窗口
“我的事件侦听器”函数根据变量Javascript 删除在其他事件侦听器函数中定义的弹出窗口,javascript,popup,mapbox-gl,Javascript,Popup,Mapbox Gl,“我的事件侦听器”函数根据变量codedCities的长度打开i弹出窗口的数量,该变量会动态变化。此功能运行良好,但问题是删除弹出窗口。在'mouseout'上,我希望所有在'mouseover'中打开的弹出窗口都关闭 item.addEventListener('mouseover', function() { for (var i in codedCities) { var popupB = new mapboxgl.Popup({
codedCities
的长度打开i
弹出窗口的数量,该变量会动态变化。此功能运行良好,但问题是删除弹出窗口。在'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);
}
});
但这不起作用,因为popupB
是在以前的函数中定义的局部变量。然后我尝试在前面的函数中使用window.popubb
将popubb
定义为一个全局变量,但是只删除了一个实例popubb,而不是所有实例。然后我尝试在弹出变量名中添加一个数字[I],并使用
window[“popup”+i]=新建mapboxgl.popup
item.addEventListener('mouseout', function() {
var step;
for (step = 0; step < codedCities.length ; step++) {
window["popup" + step].remove();
}
});
item.addEventListener('mouseout',function(){
var阶跃;
对于(步骤=0;步骤
但这根本没有显示任何东西。我想知道是否有一个已知的解决这个问题的方法
如何在mouseover
函数中定义和创建弹出窗口,然后在mouseout
函数中删除这些完全相同的弹出窗口
是否有一种方法可以在
mouseover
函数中包含我在mouseout
中想要的内容 您可以在弹出窗口和mouseout上添加一个公共css类,只需将该css类的对象作为目标并将其关闭。我已经有了一个.mapboxgl弹出窗口{最大宽度:150px;最大高度:250px;字体:12px/20px“开放无衬线”,无衬线;边框半径:5px;}
class对于应用程序中的另一种类型的弹出窗口,如何为这种情况定义另一个mapbox gl弹出窗口类?你能举个例子吗?因为在mapbox弹出窗口中没有简单的属性来添加类,所以你可以在setHtml Popubb.setLngLat(codedCities[i].geometry.coordinates.setHtml(“”+codedCities[i].properties.city+“”).addTo(map)上执行以下操作:;然后在mouseout上,使用以下查询查找弹出窗口,如果($('.mapboxgl popup').find('p.coded-cities-popup').length!=0){//关闭弹出窗口和内容}谢谢!p.coded-cities-popup
中的p.
是什么?
item.addEventListener('mouseout', function() {
var step;
for (step = 0; step < codedCities.length ; step++) {
window["popup" + step].remove();
}
});