移除由 Google 地图标记点击触发的动态创建的

removing dynamically created <div> triggered from Google map marker click

本文关键字:动态 创建 Google 地图 图标      更新时间:2023-09-26

从我所做的挖掘来看,我似乎想使用 .on,但我注意到如何实现它。我仍在学习javascript和jquery,所以我可能会错过一些东西......

下面的代码在将标记添加到 Google 地图 (v3 api) 时运行。它创建一个标记并添加一个表单域。如果用户随后单击新创建的标记,则标记将被隐藏,然后代码也应删除表单。标记删除正常,但我无法删除。这是我正在寻求帮助的行:

    $('#newdiv + site_count).remove(); 

如果我手动将 newdiv+ site_count替换为有效数字(比如 6 所以 newdiv6),代码有效,我只是不知道如何实时引用它......最后是相关代码的其余部分:

google.maps.event.addListener(map, "click", function(event) {
    marker = new google.maps.Marker({
      position: event.latLng,
      map: map
    });
    newlocation = "<div id='newdiv" + site_count + "'><input type='text' size='3' name='loc[" + site_count + "]' id='newid" + site_count + "' value = '0' /></div>";
                $('#here').append(newlocation)
    google.maps.event.addListener(marker, "click", function(event) {
                marker.setVisible(false);
                $('#new+ site_count).remove(); 
        });
        site_count++;        

})

感谢您抽出宝贵时间查看我的问题。--AJ

此行

$('#new+ site_count).remove();

有三个问题:

  1. 没有关闭',因此会导致语法错误。

  2. 您为包含表单字段的div提供了 ID newsiteX,但该行试图使用 ID newX 来查找它。

  3. 创建新div后,您将递增site_count,但稍后您尝试使用site_count 查找div,因此不会。也就是说,如果site_count 0并且您创建了一个新的div,它将具有id "newsite0",并且site_count将递增到 1 。然后,当您单击将其删除时,即使您修复了上述项目,您也会寻找newsite1而不是newsite0

您还没有展示足够的代码让我自信地为您更正它,但可能是以下几行:

$('#newsite' + (site_count - 1)).remove();

也就是说,你可能想退后一步,更深入地看看结构,这似乎有点脆弱(但可能没问题)。