0

谢谢你的帮助。

我有一个功能。在这个函数中,我创建了两个按钮并分配了两个 id。

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>';

稍后在我想做的同一功能中:

$('#_updateStation').bind('click', function(){ // stuff });

但它不起作用。内容作为弹出窗口 (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).append(content);
//map.addControl(selectControl);
//selectControl.activate();
$(document).on('click', '#createWave_updateStation' ,function(){
    console.log("TES");
});
    $('#create_stationPopup').popup('open');
4

1 回答 1

2

将事件委托给静态父容器。这样做将在匹配子节点后附加事件侦听器..

$(document).on('click', '#_updateStation',function(){ // stuff }); version >= 1.7

我将它委托给文档,因为我不确定您的 HTML 结构..

所以最好用Static Container..

同样从 jQuery 版本1.7 .on()开始 是首选方法.bind()

如果您使用的版本低于1.7版本,您可以使用.delegate附加事件

$(document).delegate('#_updateStation' ,'click',function(){ // stuff }); 
// version < 1.7
于 2012-11-15T23:12:08.933 回答