3

我需要一个等待点击的事件监听器。不幸的是,它的工作方式InfoWindows似乎在这里不起作用......

好吧,这是我的InfoBubble

var infoBubble = new InfoBubble({
      map: map,
      content: $('#my-div').html(),
      position: new google.maps.LatLng(areas[area].lat, areas[area].lng),
      shadowStyle: 1,
      padding: 0,
      borderRadius: 0,
      arrowSize: 10,
      borderWidth: 1,
      borderColor: '#ccc',
      disableAutoPan: true,
      hideCloseButton: true,
      arrowPosition: 15,
      arrowStyle: 0
    });

这是我的听众:

google.maps.event.addListener(infoBubble, 'click', function(){

        console.log("noodle");  
    });

顺便说一句,Firebug 没有报告任何错误。

4

4 回答 4

6

试试这个:

$(infoBubble.bubble_).live("click", function() {
    console.log('clicked!');
});
于 2012-09-11T12:45:59.330 回答
2

如果您使用的是 InfoBubble 的编译版本,则 .bubble_ 引用将丢失。您必须找到 .bubble_ 已更改为的内容。如果您还没有自己编译并且使用了提供的编译版本,那么 .bubble_ 引用是.e。例子:

$(infoBubble.e).find("#yourdiv").live("click",function(event) {
    console.log(event.target.id);
});
于 2013-07-22T14:14:05.817 回答
1
google.maps.event.addDomListener(infoBubble.bubble_, 'click', function() {
    alert("Ooo..!");
});

有用!

于 2012-12-28T18:21:02.413 回答
1

要进一步改进@Marius 的答案,并针对当前版本的 jQuery 进行更新(鉴于我可以看到 OP 有可用的 jQuery),请尝试以下操作以针对 infoBubble 中特定元素的单击事件:

$(infoBubble.bubble_).on("click", "button.close", function() {
    console.log("Button with class .close clicked.");
});

如果您需要将数据传递给您的函数,一种选择是使用 data-* 属性并通过事件target获取它,如下所示:

InfoBubble 内容的示例 JS:

var myVariable = 10;
var infoBubbleContentString = '<span class="my-style" data-id="' + myVariable + '">Button text</span>';

事件处理程序:

$(infoBubble.bubble_).on("click", ".my-style", function (e) {
    if ($(e.target).data('id')) {
        var myVariableValue = $(e.target).data('id'); // myVariableValue will equal 10
    }
});
于 2016-12-19T23:14:36.147 回答