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中,但会筛选事件以确定未来按钮的目标
$(“body”)。在(“单击”,“删除”,myListenerFunction);
到目前为止,您描述的实现在哪里?在当前代码中,我只看到一个标记和一个绑定到此标记的弹出窗口。