Jquery 带有点击处理程序和滚动条的谷歌地图信息框

Jquery 带有点击处理程序和滚动条的谷歌地图信息框,jquery,google-maps-api-3,Jquery,Google Maps Api 3,我有一个使用GoogleMaps脚本API和Infobox插件(本机InfoWindow的可定制版本)的应用程序 在我得到以下用例之前,它一直工作良好: 如果内容很大,我需要一个带有滚动条的信息框,它还需要包含几个带有单击侦听器的HTML元素 我通常要做的是在信息框中设置enableEventPropagation=true来支持单击处理程序,并使用jQuery委托来设置单击处理程序。如果我不允许事件传播,jQuery委托将不起作用 这很好,直到我不得不将它与功能正常的滚动条结合起来!我发现只有

我有一个使用GoogleMaps脚本API和Infobox插件(本机InfoWindow的可定制版本)的应用程序

在我得到以下用例之前,它一直工作良好: 如果内容很大,我需要一个带有滚动条的信息框,它还需要包含几个带有单击侦听器的HTML元素

我通常要做的是在信息框中设置enableEventPropagation=true来支持单击处理程序,并使用jQuery委托来设置单击处理程序。如果我不允许事件传播,jQuery委托将不起作用

这很好,直到我不得不将它与功能正常的滚动条结合起来!我发现只有当我启用了enableEventPropagation=false时,滚动条才会工作,因为如果启用了事件传播,则拖动事件只会传递到地图并解释为平移

有人知道我能做些什么,既能在信息框内容上有一个功能正常的滚动条,又能在一些内容上设置点击处理程序吗

对我来说,enableEventPropagation=false可以解决这两个问题,这听起来是合乎逻辑的,因为我不明白为什么需要将click事件传播到map,以便触发我附加到html元素的处理程序

这是我的信息框的设置对象:

{
        content: "[my html in here]",
        disableAutoPan: false,
        pixelOffset: new google.maps.Size(-77, 10),
        boxClass: "infoBox",
        infoBoxClearance: new google.maps.Size(18, 30),
        closeBoxMargin: "14px 6px",
        pane: "floatPane",
        enableEventPropagation: true
};

如果您仍在使用此选项,则需要更改地图选项,以便在鼠标进入信息框时关闭平移/缩放。您可以使用以下内容:

$(document).delegate("div#ib", "mouseenter", function() {

    theMap.setOptions({
       draggable: false,
       scrollwheel: false
    });
    console.log("mouse enter detected");

});

$(document).delegate("div#ib", "mouseleave", function() {
    theMap.setOptions({
        draggable: true,
        scrollwheel: true
    });
    console.log("mouseleave detected");
});

就像一个补充的问题。。。确保InfoBox的enableEventPropagation参数设置为true,否则它将吞掉像Moby Dick这样的事件:)id选择器$(“#ib”)比$(“div#ib”)快,因为它是转换为document.getelementbyid(“ib”)的本机选择器。我以为我疯了!我在
文档
上设置事件委派,但它仍然没有启动。我想谷歌地图可能在制作iFrame或者其他一些奇怪的东西。非常感谢。