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();

          }
      });