javascript - 在javascript中创建的按钮无法识别变量

标签 javascript jquery ajax

我正忙着为谷歌地图API(v3)创建一个脚本,几乎已经完成了,但是我遇到了一个我不知道如何解决的问题(可能是不间断编码的时间) :P)。

好吧,我想做的是创建一个 html 字符串,在其中我还创建一个按钮,我想在单击时执行一个函数,但它不起作用,控制台会向我抛出此错误:

Uncaught ReferenceError: marker_gen is not defined

这是导致问题的代码:

(创建按钮的ajax代码) (我用'->'标记了html字符串)

$.get("includes/require/gen.php", function (data) {
            $(data).find("marker").each(function () {
                //Get user input values for the marker from the form
                var name      = $(this).attr('name');
                var info   = $(this).attr('address'); //description
                var type      = $(this).attr('type');
                var point     = new google.maps.LatLng(parseFloat($(this).attr('lat')),parseFloat($(this).attr('lng')));
                //call create_marker() function for xml loaded maker
                //create_marker(point, name, address, false, false, false);
                var marker_gen = new google.maps.Marker({
                   position: point,
                   map: map,
                   icon: "img/icons/green_marker.png"
                })

                google.maps.event.addDomListener(marker_gen,"click",function(event){
                    -> contentString = '<div id="div_info"><h2>'+ name+'</h2> <p><b>Type: </b>'+type+'<br/><b>Co&ouml;rdinaten: </b>'+point+'</p><p><b>Omschrijving:</b><br/>'+info+'<br/><br/></span><button name="remove-marker" class="remove-marker" onclick="remove_marker(marker_gen)" title="Remove Marker">Remove Marker</button></div>';
                    IW.content = contentString;
                    IW.open(map,marker_gen);
                });
            });
        }); 

这是remove_marker函数(但怀疑它是否需要)

function remove_marker(Marker)
{
    /* determine whether marker is draggable 
    new markers are draggable and saved markers are fixed */
    if(Marker.getDraggable()) 
    {
        Marker.setMap(null); //just remove new marker
        //marker = null;
    }
    else
    {
        //Remove saved marker from DB and map using jQuery Ajax
        var mLatLang = Marker.getPosition().toUrlValue(); //get marker position
        var myData = {del : 'true', latlang : mLatLang}; //post variables
        $.ajax({
           type: "POST",
          url: "includes/require/gen.php",
          data: myData,
          success:function(data){
                Marker.setMap(null); 
                alert(data);
            },
            error:function (xhr, ajaxOptions, thrownError){
                alert(thrownError); //throw any errors
            }
        });
    }
}

如果有人能解决这个问题,我很想听听。

提前致谢, 雷米

最佳答案

contentString = '<div id="div_info"><h2>'+ name+'</h2> <p><b>Type: </b>'+type+'<br/><b>Co&ouml;rdinaten: </b>'+point+'</p><p><b>Omschrijving:</b><br/>'+info+'<br/><br/></span><button name="remove-marker" class="remove-marker" data-marker="' + marker_gen + '" title="Remove Marker">Remove Marker</button></div>';

不要使用 onclick.. 使用 on() 进行事件委托(delegate),因为您是动态创建此按钮。另外,在创建按钮时,请使用 data-marker="' + Marker_gen + '" 作为属性,如上所示。

$('document').on('click','.remove-marker', function() {
    var Marker = $(this).data('marker');
    //Handle everything else here
});

关于javascript - 在javascript中创建的按钮无法识别变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19815220/

相关文章:

javascript - 来自 PHP 的 CodeIgniter 访问 Controller 需要

javascript - 编写一个类似 jQuery 的 JS 元素选择器

javascript - 您可以取消绑定(bind)到文档的 jQuery 函数吗?

php - Laravel 5.5 AJAX 实时数据搜索不起作用

javascript - POST - 发布时 - Jquery - 不是 AJAX

JQuery + CSS - flex/弹跳滚动溢出 :auto

javascript - 如何在 d3 条形图中左对齐刻度

javascript - clearInterval不停地经过0(倒计时)

javascript - 使用 useState 添加一个 child 到树

javascript - 动画 <tr> 的大小