映射单击块文档单击

时间:2013-11-17 22:19:28

标签: javascript jquery google-maps jquery-gmap3

$(document).on('click', '.entity', function (e) { 
...
}) 

我正在使用上述方法来处理我网站上任何“实体”的点击。除了在地图上,它在任何地方都很棒我正在创建自定义叠加层,每个叠加层都是实体类的元素。这已在DOM中得到证实。我应用的所有CSS都有效,但是click事件似乎没有传播到文档级别。我把警报放进去进行测试,然后就开始了。点击功能为空白,没有任何反应。如何阻止它阻止?

mymap.gmap3({
    map:{
            options:{
               ...
            }
    },
    overlay:{
        values: [
            ...
        ],
        events:{
            click: function () {
                alert('clicked map entity');
            },
    ...

1 个答案:

答案 0 :(得分:1)

检查以下插件:

/*!
 *  GMAP3 Plugin for JQuery
 *  Version   : 5.1.1
 *  Date      : 2013-05-25

第343行:function OverlayView(map, opts, latLng, $div)包含以下代码:

    ...
this.onAdd = function() {
    var panes = this.getPanes();
    if (opts.pane in panes) {
        $(panes[opts.pane]).append($div);
    }
    $.each("dblclick click mouseover mousemove mouseout mouseup mousedown".split(" "), function(i, name){
        listeners.push(
            google.maps.event.addDomListener($div[0], name, function(e) {
                $.Event(e).stopPropagation();
                google.maps.event.trigger(that, name, [e]);
                that.draw();
            })
        );
    });
    listeners.push(
        google.maps.event.addDomListener($div[0], "contextmenu", function(e) {
            $.Event(e).stopPropagation();
            google.maps.event.trigger(that, "rightclick", [e]);
            that.draw();
        })
    );
};        ...

为点击和其他一些事件调用$.Event(e).stopPropagation();。这显然会阻止事件的传播。

评论这两行可以解决这个具体问题。但是,问题是可能产生的后果。