Javascript 将函数绑定到新创建的元素
谢谢你的帮助 我有一个功能。在这个函数中,我创建了两个按钮并分配了两个IDJavascript 将函数绑定到新创建的元素,javascript,jquery,Javascript,Jquery,谢谢你的帮助 我有一个功能。在这个函数中,我创建了两个按钮并分配了两个ID var content = '<div> '<div id="stationPopUpbtn">' + '<button id="createWave_updateStation" onclick="updateStationContent('+feature+')">Änderungen speichern</button>'+ '&l
var content =
'<div>
'<div id="stationPopUpbtn">' +
'<button id="createWave_updateStation" onclick="updateStationContent('+feature+')">Änderungen speichern</button>'+
'<button id="createWave_deleteStation" onclick="deleteFeature('+feature+')">Station löschen</button>'+
'</div>'+
'</div>';
但它不起作用。内容作为弹出窗口(OpenLayers)的一部分添加,弹出窗口(OpenLayers)反过来添加到地图中
var popup = new OpenLayers.Popup.FramedCloud(
feature.id+"_popup",
feature.geometry.getBounds().getCenterLonLat(),
new OpenLayers.Size(250, 100),
content,
null, // anchor
true, // closeBox exists
//closeBoxCallback
function(){
feature.style.pointRadius = 20;
map.removePopup(feature.popup);
}
);
编辑:
将事件委托给静态父容器。这样做将在匹配子节点后附加事件侦听器
$(document).on('click', '#_updateStation',function(){ // stuff }); version >= 1.7
我将其委托给文档,因为我不确定您的HTML结构
因此,最好用静态容器替换文档。
同样从jQuery版本1.7.on()
是优于的首选方法
如果使用小于1.7版的版本,则可以使用.delegate
附加事件
$(document).delegate('#_updateStation' ,'click',function(){ // stuff });
// version < 1.7
$(document).delegate('#_updateStation','click',function(){//stuff});
//版本<1.7
没有静态容器。一切都是“在飞行中”创造的。我在Openlayers中创建了一个弹出窗口,在这个弹出窗口中我有两个按钮。。下一个最好的办法是地图本身。但是我的代码在映射加载时不会执行..当然。。然后将其委托给$(document)或$('body')这样做将在事件冒泡时将事件附加到元素中
-huh?@sushath:im on>1.8。。但是,您的第一个代码不起作用,它没有激发。您是否要将var内容附加到DOM中?您必须在将其添加到DOM后将其绑定。。因此,在添加元素之后。。然后绑定点击事件我就是这么做的。。但没有附加条款。我的内容是进入弹出窗口的html。但您尚未将其添加到dom中。。还是一根线。。因此,您必须以某种方式添加它,如element.html(content)。。或element.append(content)我只能像$(document.append(content)那样将其添加到文档中;然后,在该行之后是绑定click事件的位置
$(document).on('click', '#_updateStation',function(){ // stuff }); version >= 1.7
$(document).delegate('#_updateStation' ,'click',function(){ // stuff });
// version < 1.7