Javascript 如何使.bindpopup中的元素可供传单中的外部功能访问?

Javascript 如何使.bindpopup中的元素可供传单中的外部功能访问?,javascript,leaflet,Javascript,Leaflet,我有一个向弹出窗口提供变量的函数,到目前为止,它还在工作。现在,我在弹出窗口中插入了一个按钮,并希望在单击该按钮时运行一些函数,但我的外部函数无法访问该对象。如何重写此函数,以便更轻松地访问单个元素 标记: var marker = L.marker([data[i].lat, data[i].lng], {icon: greenIcon}).addTo(map); marker.bindPopup(id + "<br>" + species + &qu

我有一个向弹出窗口提供变量的函数,到目前为止,它还在工作。现在,我在弹出窗口中插入了一个按钮,并希望在单击该按钮时运行一些函数,但我的外部函数无法访问该对象。如何重写此函数,以便更轻松地访问单个元素

标记:

var marker      = L.marker([data[i].lat, data[i].lng], {icon: greenIcon}).addTo(map);
marker.bindPopup(id + "<br>" + species + "<br>" + diameter + "<br>" + quality + "<br>" + damage + "<br>" + notes + "<br>" + "<br>" +
'<input type="submit" id = "delete" name="action" data-value = " + id + " value="Delete" method = "post"/>');
        
var marker=L.marker([data[i].lat,data[i].lng],{icon:greenIcon}).addTo(map);
marker.bindpoop(id+“
”+物种+”
“+直径+”
“+质量+”
“+损坏+”
“+注释+”
“+”
”+ '');
功能:

<script type="text/javascript">
    $(function(){
        $('#delete').click(function(d){
            
        alert("deleted")
    });
});
</script>

$(函数(){
$(“#删除”)。单击(函数(d){
警报(“已删除”)
});
});

打开弹出窗口后,您必须添加侦听器:

marker.on('popupopen',function(e){
    $('#delete').click(function(d){ 
        alert("deleted")
    });
}

正如您所了解的,您在代码中为
bindpoop
提供的只是一个HTML字符串,不能直接用于将事件侦听器附加到该字符串

您有几种可能的解决方案:

  • 构建一个HTML元素来代替字符串,以便可以将其作为对象进行操作

  • 打开弹出窗口后,将侦听器的附件延迟到,因此HTML字符串将转换为页面上的DOM元素

  • 改为使用将侦听器附加到父元素,该元素已存在于DOM中,但会筛选事件以确定未来按钮的目标

事件委派允许我们将单个事件侦听器附加到父元素,该事件侦听器将为与选择器匹配的所有子体触发,无论这些子体现在存在还是将来添加

对于jQuery,这可能类似于:

$(“body”)。在(“单击”,“删除”,myListenerFunction);

到目前为止,您描述的实现在哪里?在当前代码中,我只看到一个标记和一个绑定到此标记的弹出窗口。